2013-07-09 57 views
2

我用Java創建了一個戰艦遊戲,與SocketsServerSockets一起使用。這款遊戲在局域網上運行良好,但我希望能夠與完全不同的網絡上的某個人玩遊戲。我知道端口轉發是必要的,但是我必須在每個玩遊戲的客戶端上轉發端口嗎?或者只需要轉發服務器使用的路由器上的端口?謝謝。Java,遊戲和端口轉發

回答

4

端口轉發只在服務器上需要。由於許多NAT上的操作,任何綁定到客戶端的數據包將從最初的請求自動轉發。

所以,你只需要轉發服務器上的端口。如果使用SocketServerSocket,您需要轉發TCP,如果您的路由器給您的選擇。如果使用DatagramSockets,則在任一端點轉發UDP。

(如果你有在客戶端上轉發,你很可能就不會被閱讀此頁不轉發端口80)

+0

太好了,謝謝你的回答! – rstumbaugh

0

要闡述什麼@hexafraction是說,這裏是你可以做什麼:

構建一個任何客戶端都可以連接到的服務器。客戶通常可以連接到他們想要的任何東西。防火牆通常對可以流入但不流出的信息施加限制。因此,如果客戶端知道要連接的服務器,則可以在不修改防火牆的情況下連接到服務器,然後服務器將協調在客戶端之間傳輸數據。

+0

我也會添加有關NAT的信息,特別是涉及到UDP的情況。 – hexafraction

+0

@hexafraction你已經有了,我只是闡述 –

0

我這樣做了,我所要做的就是將我在路由器中使用的端口轉發到本地I.P.地址。如果您不知道您的本地IP地址,請運行命令提示符(假設您使用的是Windows)並運行ipconfig來找出它。如果你在家使用無線路由器通過瀏覽器訪問它到192.168.1.1希望這有助於!