問題タブ [bittorrent]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
network-programming - BitTorrent は部分転送をサポートしていますか?
BitTorrent プロトコルは、最初にファイルの最初の 3% または最初の 5% を要求するように指定できますか? そうでない場合、そのようなサポートを追加すると、プロトコルが改善されますか?
更新:では、それがプロトコルの一部である場合、なぜ多くのクライアントがそれを使用しないのでしょうか? 10 分後、ファイルの 10% が完了しますが、通常、コンテンツの 1% をプレビューすることさえできません... (運次第)
java - Java BitTorrent ライブラリ
Java 用の適切な BitTorrent ライブラリはありますか? 単純な torrent クライアントをプログラムする必要がありますが、すべてをゼロから作成する必要がなければ素晴らしいと思います。
php - トラッカーに基づいて torrent 統計を収集する方法は?
torrent の仕様を何度も読んでいますが、PHP を使用して [BitTorrent] トラッカーからピア (たとえば、シードとリーチ) の数を収集するのにまだ問題があります。
サーバーへのアクセスはまったく問題ありません。誰かが私を正しい方向に向けることができますか?
ここの仕様: http://wiki.theory.org/BitTorrentSpecification#Tracker_HTTP.2FHTTPS_Protocol
protocols - Bittorrent プロトコルの実装
bittorrent プロトコルを段階的に実装する方法に関するチュートリアル/ブログ投稿を探しています。使い方?仲間へのリクエストはどのように行いますか? トラッカーと話します。
プログラミング言語は問いません (java,ruby,perl,c#)
java - javaでbittorent info_hashを計算する
info_hash
トレントの価値を計算しようとしています。トレント全体を に読み込み、StringBuffer
次のようにカットします。
正しいハッシュを取得できないようです。torrent をStringBuffer
最後に読み込むと、バイト文字列が破損しますか? 何か不足していますか?
java - Java で実装されている Bittorrent ピア ワイヤ プロトコル
Bittorrent Peer Wire Protocol に関していくつか質問があります。この仕様を使用して Java で実装しようとしています。
Peer Wire Protocol セクションでは、すべての整数は 4 バイトのビッグ エンディアン値であると書かれています。私の知る限り、Javaはビッグエンディアンを使用しています。チョークメッセージを送信したい場合は、ということですか
チョーク:<len=0001><id=0>
sokcet 1 の後に 0 を書き込むだけですか?
私の2番目の質問について。作品をリクエストするとき、複数のファイルを 1 つの大きな連続したファイルと見なしますか? または個々のファイルで考えますか?ピースの長さがファイルと一致しないため、1 つのインデックスに 1 つのファイルの終わりと別のファイルの始まりの両方を含めることができますか?
ピアへの接続を開いてハンドシェイクを送信するときの最後の質問については、ピースをリクエストし続けるか、リクエストしてからしばらく待ってから、何かをリクエストするかどうかを確認しますか? 話はどのように行われますか?私は主にhttpタイプのネットワークプログラミングを行っており、何かを要求して応答を待ちます。しかし、作品をリクエストし続けたら、どのように作品を送るのですか?
java - 可変長メッセージの解析
この仕様でJava を使用して BitTorent プロトコルを実装しています。メッセージ セクションでは、2 つのメッセージを除いてすべてのメッセージが固定長です。そのうちの 1 つは、ハンドシェイク後の唯一の可変メッセージであるため、他のメッセージを確認して、他のメッセージが一致しなかった場合に、それがピース メッセージであると想定できます。しかし、次のメッセージについては
ビットフィールド メッセージは、ハンドシェーク シーケンスが完了した直後で、他のメッセージが送信される前にのみ送信できます。これはオプションであり、クライアントにピースがない場合は送信する必要はありません。
ビットフィールド メッセージは可変長で、X はビットフィールドの長さです。ペイロードは、正常にダウンロードされた部分を表すビットフィールドです。最初のバイトの上位ビットはピース インデックス 0 に対応します。クリアされたビットは欠落ピースを示し、セットされたビットは有効で利用可能なピースを示します。最後の予備ビットはゼロに設定されます。
間違った長さのビットフィールドはエラーと見なされます。正しいサイズでないビットフィールドを受信した場合、またはビットフィールドに予備のビットが設定されている場合、クライアントは接続をドロップする必要があります。
長さがわからないと解析する方法が思いつきません。バイトストリームで id を見つけるにはどうすればよいですか?
編集: ビットフィールド メッセージのペイロードでは、トレント ファイル内の各ピースの 0 または 1 であり、トレント コンテンツのサイズに応じてメッセージの長さが変わります。したがって、ピースの数が常に5バイトの数値に収まるとは思えません。
ruby - RubyTorrent の問題
内部 Windows ネットワークを介して大きなファイルを移動するのに役立つスクリプトを作成しようとしています。BitTorrent と組み合わせた Ruby が理想的であることを望んでいました。ただし、私のコードは実際には何もダウンロードしていないようです。
RubyTorrent プロジェクトが長い間放棄されていたことは知っているので、Stackoverflow の仲間の 1 人が助けてくれることを願っていました。
私のコード(これまでのところ):
ご覧のとおり、「bt.tracker」行は nil として表示されるため、.torrent ファイルを渡すのに問題がある可能性がありますが、ファイルの残りの部分を渡すのはなぜでしょうか?
これを機能させるための助けをいただければ幸いです。