Ejemplo n.º 1
0
    def __handle_find_node_request(self, msg, address):
        # 保存发送消息的节点信息到路由表
        node = dht_bucket.Node(msg['a']['id'], *address)
        self.bucket.update(node.node_id, node)

        # 获取k个与查询节点最近的节点信息作为应答
        nodes = dht_utils.encode_nodes(self.bucket.get_kclose())
        data = {
            't': msg['t'],
            'y': 'r',
            'r': {'id': self.server_id, 'nodes': nodes}
        }
        self.__send_message(data, address)
Ejemplo n.º 2
0
    def __handle_find_node_request(self, msg, address):
        # 保存发送消息的节点信息到路由表
        node = dht_bucket.Node(msg['a']['id'], *address)
        self.bucket.update(node.node_id, node)

        # 获取k个与查询节点最近的节点信息作为应答
        nodes = dht_utils.encode_nodes(self.bucket.get_kclose())
        data = {
            't': msg['t'],
            'y': 'r',
            'r': {
                'id': self.server_id,
                'nodes': nodes
            }
        }
        self.__send_message(data, address)
Ejemplo n.º 3
0
    def __handle_get_peers_request(self, msg, address):
        # 接收到查询某个资源的请求,说明网络上可能存在该资源,因此保存该资源信息
        info = dht_store.SRC_INFO(dht_utils.id_to_hex(msg['a']['info_hash']), address[0], address[1], 0, int(time.time()))
        self.store.save(info)

        # 更新或保存发送请求的节点信息
        node = dht_bucket.Node(msg['a']['id'], *address)
        self.bucket.update(node.node_id, node)

        # 答复该节点的请求,以便下接收到announce_peer消息
        nodes = dht_utils.encode_nodes(self.bucket.get_kclose())
        data = {
            't': msg['t'],
            'y': 'r',
            'r': {'id': self.server_id, 'token': dht_utils.random_tranid(), 'nodes': nodes}
        }
        self.__send_message(data, address)
Ejemplo n.º 4
0
    def __handle_get_peers_request(self, msg, address):
        # 接收到查询某个资源的请求,说明网络上可能存在该资源,因此保存该资源信息
        info = dht_store.SRC_INFO(dht_utils.id_to_hex(msg['a']['info_hash']),
                                  address[0], address[1], 0, int(time.time()))
        self.store.save(info)

        # 更新或保存发送请求的节点信息
        node = dht_bucket.Node(msg['a']['id'], *address)
        self.bucket.update(node.node_id, node)

        # 答复该节点的请求,以便下接收到announce_peer消息
        nodes = dht_utils.encode_nodes(self.bucket.get_kclose())
        data = {
            't': msg['t'],
            'y': 'r',
            'r': {
                'id': self.server_id,
                'token': dht_utils.random_tranid(),
                'nodes': nodes
            }
        }
        self.__send_message(data, address)