从我得到了对等列表,我建立了与对等的TCP连接,我尝试向他们发送握手消息,但他们似乎没有回应。
这是我在代码中传达的信息:
message = bytes(chr(19))+"BitTorrent protocol00000000"+self.getInfoHash(torrentCont)+self.peer_id
self.getInfoHash(torrentCont) 是来自 torrent 文件的原始哈希
这是我实际发送的内容:
BitTorrent protocol00000000ŒïƒœÝtDØ´öÙÄ×àŠD³T4F11T6ZGBQK2Y5LB8I4
关于我做错了什么的任何建议?
你混淆了字节和字符。 规范所说的是你应该发送八个空字节,而不是字符"0"(即chr(48))的八倍:
message = (chr(19) +
"BitTorrent protocol" +
8 * chr(0) + # <--- here
self.getInfoHash(torrentCont) +
self.peer_id)
# in case of doubt...
assert len(self.getInfoHash(torrentCont)) == 20
assert len(self.peer_id) == 20