我正在开发一款可以在电脑上玩或与其他玩家对战的游戏。GUI 是 Swing 但与此事无关。我的问题是:我如何与网络中的其他玩家联系?
我熟悉客户端/服务器、套接字等术语,我可以编写一个基本的客户端/服务器程序,但它只能在一台计算机上运行。我不知道如何从一台计算机连接到这个网络,比如说,在全国的一半。
我正在开发一款可以在电脑上玩或与其他玩家对战的游戏。GUI 是 Swing 但与此事无关。我的问题是:我如何与网络中的其他玩家联系?
我熟悉客户端/服务器、套接字等术语,我可以编写一个基本的客户端/服务器程序,但它只能在一台计算机上运行。我不知道如何从一台计算机连接到这个网络,比如说,在全国的一半。
您可能设置在一个路由器后面,该路由器对世界其他地方隐藏了您的本地 IP 地址(查找NAT以获取更多信息)。基本上,全世界只看到您的 YOUR_ROUTER_IP,您的路由器负责将所有 IP 数据包从外界传送给您,反之亦然。您将需要更改路由器设置,以便您的计算机/服务器获得路由器 IP 地址。通过这种方式,您可以使用简单的套接字操作从世界任何地方访问您的服务器应用程序。我希望这有帮助。
我喜欢使用Kryonet进行网络连接,它工作得很好并且有很好的文档。
您表示您知道如何使用客户端和服务器套接字,所以我将在那里抛出您应该尝试使用“真实”IP 地址而不是 localhost (127.0.0.1) 进行连接。在本地网络上使用两台机器,获取“服务器”机器的 IP 地址并使用该地址从客户端连接。
这将在全球范围内一直有效,除了您可能位于某些网络地址转换 (NAT) 防火墙之后,并且可能需要“打开”或“转发”您需要的端口。如果您需要有关 NAT 的更多信息,google 和 serverfault 将非常有帮助。
如果您的客户端和服务器位于同一台机器上,那么您可以使用环回地址(即 127.0.0.1),在 LAN 中您可以使用私有 IP 地址
Private ip address for LAN
A 类 - 10.xxx
B 类 - 172.16.0.0 - 172.31.255.255
C 类 - 192.168.0.0 - 192.168.255.255
您可以将其用于 LAN 环境
要通过 Internet 连接某人,您将需要Public ip addresses
. 每个范围内除私有 ip 外的地址都是公共地址。
现在,如果您有一台服务器,static ip
那么客户端通过互联网从世界任何地方访问它都不会成为问题。
但是,如果它通过 LAN 并从网关访问互联网,那么将有一个NAT
,那么您将需要设置inbound and outbound traffic rules
at gateway
,以让客户端访问服务器。