問題タブ [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.
java - Java スレッドのパフォーマンス
私はbittorrentクライアントに取り組んでいます。ピアと通信している間、私が彼らと通信する最も簡単な方法は、ピアごとに新しいスレッドを生成することです。しかし、ユーザーが多数のピアとの接続を維持したい場合は、多くのスレッドを生成する必要があります。
私が考えた別の解決策は、1 つのスレッドを使用してピア オブジェクトを反復処理し、それらを一定期間実行することです。
私は主にルビーで他のライブラリをチェックしました(私のものは Java です)、それらは新しいピアごとに1つのスレッドを生成します。ユーザーが接続数を 100 や 200 などの高い数に設定した場合、1 つのスレッドを生成するとパフォーマンスが低下すると思いますか?
c# - BitTorrent トラッカーが問題を発表
私は BitTorrent クライアントの作成に少しの時間を割いています。これは主に好奇心からですが、一部は C# のスキルを向上させたいという願望からです。
私は理論wikiをガイドとして使用してきました。BEncoding を処理するためのクラスのライブラリを作成しましたが、これには自信があります。基本的に、健全性チェックは、解析直後に内部表現から元の .torrent ファイルを再生成し、ハッシュして比較するためです。
次の段階は、トラッカーのアナウンスを機能させることです。ここでつまずきにぶつかりました。トラッカーは、非常に有用なエラー メッセージを表示せずにリクエストを拒否するからです。
たとえば、最新のスタック オーバーフロー データベース ダンプを見てみましょう。私のコードは、次のアナウンス URI を生成します。
私のコードに対するトラッカーの応答:
その文字列に対するトラッカーの応答が Chrome のアドレス バーにドロップされました。
peer_id は (有効な) ガベージですが、適切なもの (広く使用されているクライアントになりすます) に変更しても何も変わりません。
私が言ったように、情報ディクショナリを適切に引き出して、必要なようにハッシュ (SHA1) していると確信しており、ピア ID は整形式です。
私の推測では、私はばかげて間違ったことをしているのだと思います。
どのコードが適切であるかを推測するのは難しいです (そして、投稿するだけでもたくさんあります)。ただし、求められたものは何でも投稿しようとします。
EDIT
私はinfo_hashを16進数でエンコードしていませんでした。
これは、生成された URI を受け取り、応答を取得しようとするコードです。
flash - フラッシュ トレント クライアント
無料/商用のいずれかで利用できるそのような Web ベースのフラッシュ トレント クライアントはありますか?
php - トレントのシーダーとピアを数えるには?
トレント追跡サイトのシーダーとピアカウンターを作成するにはどうすればよいですか?
linux - wget のような bittorrent クライアントまたはライブラリ?
wget や curl のように使用できるビットトレント クライアントまたは (Java|Python|Ruby|Perl) ライブラリはありますか?
wget を使用するように、単純にスクリプトのステップとして使用したいと思います。
編集:申し訳ありませんが、私はUbuntuを使用していると述べるべきでした。
python - トレントのスクレイプURLを計算する方法
私はビットトレント仕様を読み、トレントトラッカーからシード/ピア/ダウンロードされたデータを(Pythonを使用して)取得する方法を見つけようとして、いくつかの検索を行いました。トレントから情報ハッシュを問題なく計算できます。これは、さまざまな動作中のトレントアプリケーションによって提供される情報ハッシュと一致します。
ただし、トラッカーから情報を取得しようとすると、URLを入力した形式に応じて、タイムアウト(トラッカーが機能している)または空のデータを取得します。
http://tracker.openbittorrent.com/scrape?info_hash=a8c482902b1c735de462479721b011dc7b3d3558-タイムアウト
これは20文字の長さである必要があると言われたので、部分文字列を取りましたが、これは空のデータを提供します。
http://tracker.openbittorrent.com/scrape?info_hash=a8c482902b1c735de462-d5:filesdee _
スクレイプURLのインフォハッシュをエンコードまたは作成する方法について誤解していると思いますが、私の人生のどこにいるのかわかりません。
c# - オブジェクトの新しいインスタンスを作成しますか、それとも既存のインスタンスを変更しますか?
楽しみのために、サイドプロジェクトとしてC#でBitTorrentライブラリを作成しようとしています。ただし、今対処しないと、後で問題が発生する可能性のある設計上の問題が発生しました。
私は現在、トレント内のファイルを提供するために、私に接続しようとするすべてのピアのリスニング状態にするPeerGreeter
クラスを持っています。Socket
ピアが接続すると、グリーターはハンドシェイクを交換し、すべてが有効であることを確認してからPeerConnected
、関連するSocket
ハンドシェイク情報をハンドラー引数として使用してイベントを発生させます。
Torrent
単一のトレントとそのすべての義務を表す私のクラスにはPeer
、接続および切断された、群れのすべてのピア(オブジェクトにカプセル化されている)の2つのリストがあります。グリーターがPeerConnected
イベントを発生させると、Torrent
インスタンスはPeer
切断されたリストで対応するものを見つけます。見つかった場合は、接続リストに移動し、インスタンス内Connection
のタイプのプロパティをグリーターによって作成されたものに設定します。プロパティは、アクセス修飾子が次のような自動プロパティです。Socket
Socket
{ get; internal set; }
私が抱えている問題は、私が知る限り、これはスレッドセーフではないということです。あるスレッドがの接続で動作していて、Peer
別のスレッドがその接続オブジェクトを何らかの方法で変更したり、破棄したりすると、問題が発生する可能性があります。Connection
プロパティのセッターのアクセス修飾子をprivate
に設定し、コンストラクターで設定することを検討しましたが、問題Peer
は、切断されたリストのプレースホルダーを置き換える新しいオブジェクトを作成して、接続されたリストに追加する必要があることです。
私の質問は、セッターをとして使用することに固執する必要がありますinternal
か、それともそれを作成しprivate
てプレースホルダーをまったく新しいインスタンスに置き換えることも良いアプローチですか?
networking - Bittorrent プロトコルを理解する
書籍やチュートリアル サイトを探しています。
Bittorrent プロトコルがどのように機能するかを理解し、後で独自のトラッカーを実装したいと考えています。
私はネットワーク プロトコルの知識があまりないので、初心者向けのものを探しています。
次の投稿を見たことがありますが、私の問題の解決にはなりませんでした:
完全に C# で書かれた BitTorrent クライアント?
Bittorrent を理解するための良い本やリソースをお探しですか?
手伝ってくれてありがとう 。