Ich habe Probleme mit dem Bit-Torrent-Protokoll. Ich bin gerade dabei, eine Handshake-Nachricht an einige Kollegen zu senden. Ich habe meinen Client im Grunde mit jedem Peer in der Liste verbinden und dann den 'Handshake' senden. Code ist unten -Keine Daten vom BitTorrent-Peer-Handshake empfangen
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')
Da meine Variablen, die ich sende. Mein msg ist -
msg = (pstrlen + pstr + reserved + new.torrent_hash() + peer_id)
Basierend auf der Bit-Torrent-Spezifikation meiner Botschaft ist die geeigneten len von 49 + len (pstr) -
lenmsg = (pstrlen + reserved + new.torrent_hash() + peer_id)
print(lenmsg)
print(len(lenmsg))
wird außer Betrieb gesetzt -
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
die gesamte Nachricht sieht so aus -
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'
Mein Hauptproblem ist, dass ich keine Daten zurückbekomme. Ich habe die socket.settimeout(4)
und es wird nur Timeout?
Okay, ich habe, dass ein Tippfehler war, glaube ich. Wenn die Nachricht korrekt ist, kann ich anfangen zu suchen, warum ich keinen Handshake vom Peer zurück bekomme. Es könnte sein, dass ich Asyncore nicht verstehe? –
Schwer zu sagen, ohne auf den Code zu schauen. Vielleicht versuchen Sie, WireShark zu verwenden und mit einem funktionierenden Client zu vergleichen. – Encombe