SimpleTorrent
结构体 | 宏定义 | 枚举 | 函数 | 变量
peer.h 文件参考

单个 peer 相关操作 API 声明 更多...

#include "metainfo.h"
peer.h 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

结构体

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 PeerMsgpeer_get_packet (struct Peer *peer)
 获取 BT 报文 更多...
 
struct Peerpeer_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位偏移量

这是这个函数的调用关系图:

struct PeerMsg* peer_get_packet ( struct Peer peer)

获取 BT 报文

参数
peer指向 peer 对象
返回
输出动态分配的指向 packet 的指针

len 不应为 0, keep-alive 由上层检查

这是这个函数的调用关系图:

struct Peer* peer_new ( int  fd,
size_t  nr_pieces 
)

peer 构造

参数
fd连接套接字
nr_pieces分片大小
返回
动态分配的 peer 指针

bitfield 的大小是对 nr_pieces / 8 的上取整.

这是这个函数的调用关系图:

void peer_send_msg ( struct Peer peer,
struct PeerMsg msg 
)

向 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

参数
bytesbitfield 缓冲区
bit_lenbit 数, 一般对应分片数量

这是这个函数的调用关系图: