0

从我得到对等列表并建立到对等的 tcp 连接,我尝试向他们发送握手消息,但他们似乎没有响应。

这是我在代码中的消息:

message = bytes(chr(19))+"BitTorrent protocol00000000"+self.getInfoHash(torrentCont)+self.peer_id

self.getInfoHash(torrentCont) 是种子文件的原始哈希

这是我发送的实际内容:

BitTorrent protocol00000000ŒïƒœÝtDØ´öÙÄ×àŠD³T4F11T6ZGBQK2Y5LB8I4

关于我做错了什么的任何建议?

4

1 回答 1

5

你混淆了字节和字符。规范所说的是您应该发送八个空字节,而不是字符“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
于 2012-12-10T00:31:22.620 回答