2012-03-29 21 views
1

私のコースでは、Javaでビットトレントクライアントを構築する必要があります。私は接続がどのように扱われているかを概念化するのに苦労しています。私は段階的に進み、私を悩ます部分を指摘します。私が間違った声明をした場合は私を修正してください。しかし、ほとんどの場合、私はプロトコルを理解しています。それは、受信ピアからの接続やポートとソケットの扱いの問題です。ビットトレントプロトコルJavaプロジェクト - 着信接続

トラッカーと接続するときに、あなたと接続したいピアのために、あなたが聞くポートをトラッカーに指示します。

トラッカーから取得するピアディクショナリには、待機中のすべてのピアポートが含まれます。これらのピアと接続するには、ランダムなポートにソケットを作成して、ハンドシェイクを送信するだけです。

私の質問は、あなたが相手側のピアであるかどうかです。つまり、あなたがトラッカーに与えたポートを聞いていると、ピアがそのポートでハンドシェイクを送信すると、別のポートに送信したい相手にどのように通信しますか。

私も複数のピアとのアップロードからのダウンロードに対処する方法を把握しようとしているポートとソケットと非常に混乱してもらってますが、ここで私が作ったいくつかの仮定されている:すべてのために

  1. あなたがアップロードした新しいポート/ソケットを使用します(アクティブなピアの場合)/をダウンロードします。
  2. トラッカーに与えられたポートは、着信ピアを聴くためだけに使用されます。

ポートとソケットについて私が理解していると、おそらく問題を把握できなくなっていると思います。私はこれも正しく言いたいと思います。ありがとう。

答えて

1

サーバーが着信接続のために特定のポートをリッスンしている間、そのプロトコルはハンドシェイクの一部として新しいポートに切り替わります。他のポートを使用するようにピアに指示する必要はありません。

+0

もう1つの質問がありますが、1つのポートでダウンロード/アップロードの速度が制限されていますか? –

+0

@PeteJodo - あなたの実際の物理的な帯域幅は、ソフトウェアによる理論的なスループットよりもはるかに低いでしょう。 TCP/IPはポート自体に何らかの制限を設けませんが、これによりオペレーティングシステムや他のソフトウェア/ハードウェアが停止することはありません。 –

関連する問題