예제 #1
0
def process_find_node_response(crawler, msg, address):
    # print('find node response')
    bnodes = msg[b'r'][b'nodes']
    nodes = dht_node.decode_nodes(bnodes)
    for node in nodes:
        if node.nid == crawler.crawler_nid:
            continue
        # crawler.nodes.append(dht_node.Node(node.nid, node.ip, node.port))
        crawler.nodes.add(node)
예제 #2
0
 def test_decode_nodes(self):
     compact_nodes = b'12345678901234567890ABCDFF09876543210987654321DCBAFF'
     correct_nodes = [dht_node.Node(b'12345678901234567890', '65.66.67.68', 17990),dht_node.Node(b'09876543210987654321', '68.67.66.65', 17990)]
     nodes = dht_node.decode_nodes(compact_nodes)
     self.assertEqual(len(correct_nodes), len(nodes))
     for correct_node in correct_nodes:
         node = nodes.popleft()
         self.assertEqual(correct_node.nid, node.nid)
         self.assertEqual(correct_node.ip, node.ip)
         self.assertEqual(correct_node.port, node.port)