我正在学习Kristen Widman编写bittorrent客户端的教程,以及Wiki,但我有一点困惑,无法从在线资源中清除。
到目前为止,我已经能够发送一个跟踪器请求并接收一个对等方列表,它们的IP地址和端口我存储如下:
[{'IP': IPv4Address('76.126.244.88'), 'port': 6881}, ... ]
Kristen在她的教程中建议我先尝试与一个同伴建立联系。我想我会先尝试与列表中的第一个同行联系,到目前为止还不错。
然而,对于每个对等体,都存在某些状态,如"am_choking"、"peer_choking"、"am_interested"、"peer_interested"。对于我列表中的每个同行,我是否需要跟踪这些州中的每一个?
是的,到每个对等点的连接都需要维护一组独立的状态,以记住远程发送的最新状态。
这在官方的bittorrent规范中有明确提及:
连接的两端都包含两个状态位:阻塞与否,感兴趣与否。
以及在wiki上:
客户端必须维护与远程对等端的每个连接的状态信息: