私はlibtorrent/rasterbar用のPythonバインディングで遊んでいました。 私がしたいことは、新しい 'node-id'を生成し、それを他のノードに再アナウンスすることでした。libtorrent dhtピアリクエスト?
「bencoded dicionary」が作成される必要があり、force_dht_reannounceのようなものを使ってアナウンスが行われると読んでいますが、これは正しいですか?
私はlibtorrent/rasterbar用のPythonバインディングで遊んでいました。 私がしたいことは、新しい 'node-id'を生成し、それを他のノードに再アナウンスすることでした。libtorrent dhtピアリクエスト?
「bencoded dicionary」が作成される必要があり、force_dht_reannounceのようなものを使ってアナウンスが行われると読んでいますが、これは正しいですか?
セッション状態ファイルを作成し、session::load_state()
関数に与えることで、libtorrentにDHTの特定のノードIDを使用させることができます。これを行うと、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()