1
我在bit torrent協議上遇到了一些麻煩。我正在向一些同行發送握手消息。我有我的客戶基本連接到列表中的每個同行,然後發送'握手'。代碼如下 -從bittorrent同級握手中收不到任何數據
peer_id = 'autobahnbit'
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)
基於比特激流規範我的消息是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\x93autobahnbit'
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\x93autobahnbit'
我的主要問題是我沒有收到任何數據。我有socket.settimeout(4)
,它會超時?
好吧,我有一個是一個錯字我相信。如果消息是正確的,那麼我可以開始尋找爲什麼我沒有收到來自對等方的任何握手。這可能是因爲我不理解asyncore? –
很難說不看代碼。也許嘗試使用WireShark並與工作客戶端進行比較。 – Encombe