2012-11-08 124 views
0

我知道我的IP地址,以及我的朋友的IP地址。 如何在兩臺機器之間傳輸對象/文件? 我是一名高級Java程序員,但從未與網絡合作過。如何與遠程計算機上的對象進行通信?

編輯: 我現在使用一個名爲jnmp2p(http://code.google.com/p/jnmp2p/)的API。 當我使用內部IP時它工作正常,但當我給出外部IP時失敗。

如何連接到不在我的專用網絡上的計算機?

+0

是「朋友」人還是軟件? – bobah

+0

你可以使用scp :)你的問題的描述不是詳細的!你想在Java中實現一些應用程序?你想使用一些已經制定的解決方案?你想使用Java或其他語言? – codewarrior

回答

4

如果您正在尋找兩個java應用程序之間的通信和不想幹擾低層網絡細節,那麼您可以使用以下兩種方法,具體取決於您正在處理的應用程序的類型。

  • 如果這兩個應用程序(在兩臺機器上)是Java獨立的應用程序,然後RMI是最好的選擇。從這些鏈接中檢查基本知識(1,2
  • 如果您的應用程序(接收文件/對象)是Web應用程序,那麼您可以在服務端編寫Servlet,然後編寫客戶端應用程序以發送文件/對象(二進制)到服務器。爲此目的,Commons FileUpload是非常受歡迎的圖書館。
+0

感謝您的回覆。無論如何,我正在使用一個名爲jnmp2p的API。儘管它使用了一些反射技術,但我發現它非常直觀且易於使用。 (http://code.google.com/p/jnmp2p/) – divs1210

0

作者jnmp2p在這裏。我不再維護圖書館了,因爲我已經轉移到其他方面了。不過,我有一些評論。

與您的專用網絡之外的IP進行點對點通信是一個難題。這是因爲兩端的有狀態NAT和防火牆已成爲共同的地方,這會阻止您直接在機器之間建立連接。

例如,skype使用集合服務,其中兩臺機器都啓動到第三臺機器的出站連接並通過它進行通信。除了建立額外的基礎設施以外,任何點對點解決方案都將侷限於NAT內的子網,所以諸如JNMP2P或RMI(經過大幅修改)的解決方案將是您的最佳選擇。

相關問題