2013-04-05 124 views
-1

我有一個用Java編寫的服務器,它基本上等待來自不同客戶端的請求並服務於他們的請求。我從Eclipse運行這個服務器。該服務器可在本地網絡上訪問,但我希望能夠從本地網絡外部訪問此服務。請問有什麼辦法可以嗎?從本地網絡外部訪問服務器

P.S.我是一個真正的初學者在這些東西

+1

確保你的機器是從外部訪問的IP地址,防火牆可以讓外面的機器訪問您的服務器偵聽PROT這個IP。 – 2013-04-05 22:30:59

+3

兩種主要的問題都是在stackoverflow範圍之外。防火牆和NAT。我會研究這些事情,並考慮發佈在超級用戶上,如果你仍然有問題。 – jedwards 2013-04-05 22:31:01

回答

3

你可以打開一個端口在路由器,導致服務器正在偵聽。然後,您連接到您的公共IP。這個ip可以是found on

0

你也可以下載類似Hamachi的東西,然後下載Hamachi並在其他PC和Mac(以及目前處於測試階段的Linux)上登錄到你的網絡。然後,您將希望能夠訪問您的服務器。

0

正如@Java球員說,問題是,你的路由器(NAT)否認有任何傳入數據包到本地網絡......簡單地說,有許多解決方案這樣的:

  1. 第三方服務器:你必須有個扮演一個專用服務器e中介的作用,在你的客戶/服務器程序之間。

    優點:

    • 完全解決相關的NAT問題。

    缺點:

    • 除了你的客戶,你必須編寫其他第三方轉發數據包到期望的目的地。

    • 順便說一句,它有點沉重(浪費帶寬)。

  2. Reversed connexion:服務器和客戶端程序顛倒過來,這是指客戶端成爲一個服務器,服務器成爲客戶端,「被大多數的木馬...

    優點:

    • 很容易實現這種方法。

    缺點:

    • 您必須至少有一個打開的端口。
  3. Udp hole punching:這種方法被所有peer2peer解決方案(例如:skype,utorrent ...)使用。

    優點:

    • 你不需要任何路由器的配置。
    • 對等體之間的直接連接。

    缺點:

    • 您還需要一個名爲STUN server獲得有關你的路由器信息第三方服務器。
    • 並非所有與udp打孔工作的路由器,你必須考慮第一個解決方案。
    • 編寫打孔解決方案並不容易。
相關問題