0

ポート 45000 で torrent ファイルをシードしているコンピューターの 1 つがあります。Python (またはおそらく perl) で小さなクライアントを作成しようとしています。クライアントと。Azureus では、これは peer.getSupportedMessages() のような呼び出しを使用して行われます。PythonまたはPerlのライブラリを使用してこれを行うことは可能ですか?

返されるメッセージの例は次のようになります。

BT_KEEP_ALIVE
BT_PIECE
BT_REQUEST
BT_UNCHOKE
BT_UNINTERESTED
BT_SUGGEST_PIECE
BT_HAVE_ALL
BT_HAVE_NONE
BT_REJECT_REQUEST
BT_ALLOWED_FAST
BT_LT_EXT_MESSAGE
BT_DHT_PORT
lt_handshake
ut_pex
4

1 に答える 1

2

私の知る限り、サポートされているメッセージのリストは、Azureus(および場合によっては一部のAzureus準拠ツール)でのみサポートされているカスタムハンドシェイクメッセージの一部であり、公式のBitTorrentシステムの一部ではありません。ただし、おそらく、ベンコード化されたAZハンドシェイクを作成し、それをシーダーに送信し、応答をデコードして、サポートされているメッセージを確認することができます。

AZHandshake.javaには、メッセージがどのように表示されるかについての詳細があります。

CPANのBencodeモジュールを使用すると、次のようなことができます。

  my $handshake = bencode { 
    identity => '', client => '', ... }; # All fields from AZHandshake.java

  # send handshake to seeder and get a response
  my $handshake_response = ...

  my $dictionary = bdecode $handshake_response;

  print join "\n", @{$dictionary->{messages}}, "\n";

もちろん、トリックは、シーダーから有効な応答を引き出す適切なハンドシェイクを設定することです。残念ながら、少しのプログラミング作業を必要とせずにそれを実行できるものは何も知りません。

于 2010-04-03T22:05:44.747 に答える