2012-09-30 63 views
1

我得到了一個項目,在該項目中我必須與沒有任何中間服務器的對等方共享文件。我想知道如何知道網絡上有多少主機在線以及如何連接到它們。我必須通過Java粗略地爲我的計算機中的主機創建路由表。Java中的對等2對等連接

回答

1

您不需要保留路由的任何軌跡。您所需要的只是瞭解端點地址。

您可以通過與主機建立連接來了解主機是否連接到網絡。

您提到不會有中間服務器,所以NAT穿孔不在您的問題範圍之內。

以起點看java.net.Socket類的文檔。

+1

我該如何獲得另一個端點地址? –

+0

我可以通過getInetAddress()獲取遠程主機IP地址...但是不知道如何第一次連接到另一個端點,如果我不知道它的地址和服務器實現是不允許的話。提前致謝。 –

+0

@RahulKumar你能否澄清一下你的問題。這是太抽象,給你任何建議 – Serge

0

我打算假設這是私人網絡。相對包含的東西。讓他們通過互聯網找對方聽起來像是一場噩夢。

因此,鑑於此,您的同行尋找對方的一個模型可能是選擇標準化的端口序列和活動信號。然後當對方搜索其他對象時,它只會遍歷網絡上的所有IP,並對該端口號發出請求。如果它得到一個活着的信號,它將它添加到一個表格中。信號計算機也必須記錄新角。

您必須選擇端口序列,以便它們通常在網絡上未使用。 (相當大)我說順序,以便有一個偏好,以加快搜索速度。

爲了加快搜索速度,當發送活動信號時,它也可以發送它的同級表和它檢查的IP(以及它以相同的方式接收到的)。然後,新的同伴只需要檢查網絡上的新IP,因爲具有該新程序的新實例的舊IP將建立自己。

希望有幫助

+1

我們是否每次都必須與所有主機一起廣播對等表? –

+0

不,完全沒有。如果對您更容易,您可以掃描整個網絡。讓系統發回表格還有一點工夫,但它可能會減少整個系統的網絡開銷。 – dakotapearl