Search code examples
pythonbittorrentdht

ping a bittorent dht bootstrap node could not get a answer


when send find_node to router.utorrent.com there is no response code like this

import bencode
import random
import socket

# Generate a 160-bit (20-byte) random node ID.
my_id = ''.join([chr(random.randint(0, 255)) for _ in range(20)])
ping_query = {'y': 'q',
          't': '0f',
          'q': 'ping',
          'a': {'id': my_id}}
ping_query_bencoded = bencode.bencode(ping_query)

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sendto(ping_query_bencoded,
     (socket.gethostbyname('router.bittorrent.com'), 6881))
r = s.recvfrom(1024)
ping_response = bencode.bdecode(r[0])
print(ping_response)

Solution

  • I ran your example and it worked fine. It looks like your firewall is blocking the UDP response.