libtorrent dht同行请求?

时间:2011-07-07 14:41:06

标签: python uri bittorrent pex dht

我一直在玩libtorrent / rasterbar的python绑定。 我想要做的是生成一个新的'node-id'并将其重新声明到其他节点。

我读到需要创建一个'bencoded dicionary',我假设使用force_dht_reannounce之类的东西宣布,这是正确的吗?

1 个答案:

答案 0 :(得分:4)

您可以通过制作会话状态文件强制libtorrent为DHT使用特定节点ID,并将其提供给session::load_state()函数。执行此操作后,您还需要通过调用session::stop_dht(),然后调用session::start_dht()重新启动DHT。

您需要制作的会话状态的相关部分具有以下格式(bencoded):

  {
    "dht state": {
      "node-id": "<20-byte binary node-ID>"
    }
  }

如果您想保持其余的会话状态,最好先调用session::save_state(),然后只需插入/覆盖node-id字段。

这样的事情:

state = ses.save_state()
state["dht state"]["node-id"] = "<...>";
ses.load_state(state)
ses.stop_dht()
ses.start_dht()