2011-07-07 6 views
1

私はlibtorrent/rasterbar用のPythonバインディングで遊んでいました。 私がしたいことは、新しい 'node-id'を生成し、それを他のノードに再アナウンスすることでした。libtorrent dhtピアリクエスト?

「bencoded dicionary」が作成される必要があり、force_dht_reannounceのようなものを使ってアナウンスが行われると読んでいますが、これは正しいですか?

答えて

4

セッション状態ファイルを作成し、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() 
関連する問題