|
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 数, 一般对应分片数量 |

1.8.11