SimpleTorrent
|
单个 peer 相关操作 API 声明 更多...
#include "metainfo.h"
结构体 | |
struct | PeerHandShake |
握手信息 更多... | |
struct | PeerMsg |
BT 消息 更多... | |
struct | Peer |
描述 peer 信息 更多... | |
宏定义 | |
#define | PSTR_DEFAULT "BitTorrent protocol" |
握手信息要求的字符串 | |
#define | PSTRLEN_DEFAULT (sizeof(PSTR_DEFAULT) - 1) |
PSTR_DEFAULT 对应的长度,握手信息要求。 | |
枚举 | |
enum | { BT_CHOKE, BT_UNCHOKE, BT_INTERESTED, BT_NOT_INTERESTED, BT_HAVE, BT_BITFIELD, BT_REQUEST, BT_PIECE, BT_CANCEL } |
函数 | |
struct PeerMsg * | peer_get_packet (struct Peer *peer) |
获取 BT 报文 更多... | |
struct Peer * | peer_new (int fd, size_t nr_pieces) |
peer 构造 更多... | |
void | peer_free (struct Peer **peer) |
释放 peer 更多... | |
void | print_bit (unsigned char *bytes, size_t bit_len) |
向标准输出打印 bitfield 更多... | |
void | peer_set_bit (struct Peer *peer, unsigned bit_offset) |
设置 peer 的位域 更多... | |
unsigned char | peer_get_bit (struct Peer *peer, unsigned bit_offset) |
获取 peer 的位域 更多... | |
void | peer_send_msg (struct Peer *peer, struct PeerMsg *msg) |
向 peer 发送 BT 消息 更多... | |
变量 | |
const char * | bt_types [] |
对应 BT 报文类型的字符串 | |
单个 peer 相关操作 API 声明
void peer_free | ( | struct Peer ** | peer | ) |
释放 peer
peer | 要释放的 peer, 会改写成 NULL |
unsigned char peer_get_bit | ( | struct Peer * | peer, |
unsigned | bit_offset | ||
) |
获取 peer 的位域
peer | 要获取的 peer |
bit_offset | 位偏移量 |
获取 BT 报文
peer | 指向 peer 对象 |
len 不应为 0, keep-alive 由上层检查
struct Peer* peer_new | ( | int | fd, |
size_t | nr_pieces | ||
) |
peer 构造
fd | 连接套接字 |
nr_pieces | 分片大小 |
bitfield 的大小是对 nr_pieces / 8 的上取整.
向 peer 发送 BT 消息
提前构造好 msg 并将其发送给指定的 peer, 以 msg 的 len 成员为准发送缓冲区,调用者保证其正确性。
peer | 要发送消息的 peer |
msg | 发送的消息 |
void peer_set_bit | ( | struct Peer * | peer, |
unsigned | bit_offset | ||
) |
设置 peer 的位域
peer | 要设置的 peer |
bit_offset | 位偏移量 |
void print_bit | ( | unsigned char * | bytes, |
size_t | bit_len | ||
) |
向标准输出打印 bitfield
bytes | bitfield 缓冲区 |
bit_len | bit 数, 一般对应分片数量 |