我正在遵循Kristen Widman教程来编写Bittorrent客户端,也遵循Wiki,但是我有一个困惑,就是我无法从在线资源中清除。
到目前为止,我已经能够发送跟踪器请求并接收对等方的列表,这些对等方的IP地址和端口是这样存储的:
[{'IP': IPv4Address('76.126.244.88'), 'port': 6881}, ... ]
Kristen在她的教程中建议我尝试首先连接到单个同伴。我想我会尝试首先与列表中的第一个对等方建立联系,到目前为止一切顺利。
但是,关于每个同级,都有某些状态,例如'am_choking','peer_choking','am_interested','peer_interested'。对于列表中的每个对等方,我是否需要跟踪这些状态中的每个状态?
是,到每个对等方的连接需要维持一组独立的状态,以记住远程发送的最新状态是什么。
[official bittorrent specification中明确提及:
连接在任一端都包含两个状态位:是否阻塞,是否感兴趣。
还有on the wiki:
客户端必须维护与远程对等方建立的每个连接的状态信息: