我用Java创建了一个Battleship游戏,与Sockets
和ServerSockets
一起使用。该游戏在局域网上运行良好,但我希望能够在一个完全不同的网络上与某人对战。我理解端口转发是必要的,但我是否必须在每个玩游戏的客户端转发端口?或者只需要转发服务器正在使用的路由器上的端口?感谢。
答案 0 :(得分:4)
仅在服务器上进行端口转发。由于许多NAT上的操作,任何绑定到客户端的数据包都将从初始请求自动转发。
因此,您只需要转发服务器上的端口。如果您使用Socket
和ServerSocket
,则需要转发TCP,如果路由器为您提供了选择。如果使用DatagramSockets
,则在任一端点转发UDP。
(如果您必须在客户端转发,则很可能在没有转发端口80的情况下不会阅读此页面)
答案 1 :(得分:0)
详细说明@hexafraction的内容,以下是您可以做的事情:
构建任何客户端可以连接的服务器。客户通常可以连接到他们想要的任何东西。防火墙通常会限制可以流入但不会流出的信息。因此,如果客户端知道要连接的服务器,他们可以连接到它而无需修改防火墙,然后服务器将协调在客户端之间传输数据。
答案 2 :(得分:0)
我这样做了,我所要做的就是将我在路由器中使用的端口转发到我当地的I.P.地址。如果您不知道您的本地IP地址运行命令提示符(假设您使用的是Windows)并运行ipconfig来计算它。如果您在家中使用无线路由器通过浏览器访问它到192.168.1.1希望这有帮助!