没有从bittorrent对等握手接收任何数据

时间:2016-12-06 00:45:02

标签: python tcp bittorrent asyncore

我在bit torrent协议上遇到了一些麻烦。我正在向某些同行发送握手消息。我的客户端基本上连接到列表中的每个对等端然后发送'握手'。代码如下 -

peer_id = 'autobahn012345678bit'
peer_id = peer_id.encode('utf-8')
pstr = 'BitTorrent protocol'
pstr = pstr.encode('utf-8')
pstrlen = chr(19)
pstrlen = pstrlen.encode('utf-8')
reserved = chr(0) * 8
reserved = reserved.encode('utf-8')

我发送的变量有。我的消息是 -

msg = (pstrlen + pstr + reserved + new.torrent_hash() + peer_id)

基于bit torrent规范,我的消息是49 + len(pstr)的适当len -

lenmsg = (pstrlen + reserved + new.torrent_hash() + peer_id)

print(lenmsg)
print(len(lenmsg))

出局 -

b'\x13\x00\x00\x00\x00\x00\x00\x00\x00\x94z\xb0\x12\xbd\x1b\xf1\x1fO\x1d)\xf8\xfa\x1e\xabs\xa8_\xe7\x93autobahn012345678bit'
49

整个邮件看起来像这样 -

b'\x13\x00\x00\x00\x00\x00\x00\x00\x00\x94z\xb0\x12\xbd\x1b\xf1\x1fO\x1d)\xf8\xfa\x1e\xabs\xa8_\xe7\x93autobahn012345678bit'

我的主要问题是我没有收到任何数据。我有socket.settimeout(4)并且它刚刚暂停?

1 个答案:

答案 0 :(得分:1)

输出不正确,它错过了'BitTorrent协议' 正确的握手字符串长度为68个字节。

应该是:

\x13BitTorrent protocol\x00\x00\x00\x00\x00\x00\x00\x00\x94z\xb0\x12\xbd\x1b\xf1\x1fO\x1d)\xf8\xfa\x1e\xabs\xa8_\xe7\x93autobahn012345678bit