2012-03-29 91 views
1

對於我的課程,我們必須用Java構建一個bittorrent客戶端。我很難概念化處理連接的方式。我要一步一步地指出困擾着我的部分。如果我做出不正確的聲明,請糾正我的錯誤,但大部分我理解協議,這更多的是來自對等端的連接以及處理端口和套接字的問題。BitTorrent協議Java項目 - 傳入連接

因此,當您連接跟蹤器時,您會告訴它您將收聽的端口,以便希望與您建立聯繫的同事。

您從跟蹤器獲得的對等詞典包括他們正在監聽的所有對等端口。要與這些同伴連接,只需在隨機端口上創建一個套接字,然後發送握手。

現在我的問題是,如果你是另一邊的同伴。也就是說,如果您在監聽端口上監聽跟蹤器,並且對等方向您發送該端口的握手信息,那麼您如何與對等方進行通信,以便您希望它傳輸到不同的端口。

我已經變得很迷茫與端口和插槽試圖弄清楚如何處理來自多個對等下載和上傳以及但這裏有一些假設,我做了:

  1. 每您與您連接的同行使用您上傳的新端口/套接字(如果它們是主動對等體)/下載。
  2. 給予跟蹤器的端口僅用於偵聽傳入的對等端。

我想也許我對端口和套接字的理解可能存在缺陷,這使我無法理解這個問題。我希望我也正確地表達了這一點。謝謝。

回答

1

當您的服務器偵聽傳入連接的特定端口時,底層協議將切換到新端口作爲握手的一部分。你不必告訴對方使用不同的端口。

+0

我還有一個問題,一個端口是否會從您的總體帶寬中獲得有限的下載/上傳速率? – 2012-03-30 22:00:54

+0

@PeteJodo - 很可能您的實際物理帶寬將遠遠低於通過軟件的理論吞吐量。 TCP/IP本身對端口沒有任何限制,但這並不能阻止操作系統或其他軟件/硬件這樣做。 – 2012-03-31 04:30:57