Java中的局域网游戏

时间:2012-08-09 18:52:45

标签: java sockets networking ip lan

我花了一些时间学习Java中的套接字编程,并设法制作了几个使用套接字的简单应用程序。 (即时通讯,井字游戏,基本的东西)对于我的程序,我使用了与ServerSocket和Socket类的客户端 - 服务器关系。到目前为止,我一直在同一台机器上测试我的所有游戏,这意味着客户端和服务器都运行在同一台机器上,而我使用的套接字ip是127.0.0.1。现在我想使用相同的逻辑制作局域网游戏。一台计算机将成为服务器,另一台计算机将成为客户端。

我想问的问题,请原谅我,如果这是一个愚蠢的问题,我并没有真正了解网络和诸如此类的东西,但在什么条件下我可以在两台机器之间建立套接字连接。我的意思是,我在一台计算机上运行我的套接字服务器,我希望另一台计算机上的套接字使用第一台计算机的ip进行连接。比方说,例如我的IP是“192.1.1.4”我希望能够连接到该计算机。是否有可能在世界上任何两台计算机之间建立这样的连接?我知道“局域网”代表“局域网”,但除此之外,我对此一无所知。对不起,这是一个愚蠢的问题,如果有人需要我,我可以澄清一下。

基本上,我必须在两台机器上满足哪些条件才能使用Java程序在它们之间建立套接字连接?

4 个答案:

答案 0 :(得分:5)

您可以在:

之间建立TCP / IP连接
  • 同一局域网中的两台计算机(私有IP)
  • 两台具有公共IP(互联网)的机器
  • LAN中的计算机和具有公共IP的计算机,提供从LAN打开到公共IP的连接

除非网关配置为将连接重定向到该计算机的特定端口,否则无法从LAN外部打开到LAN内部计算机的直接TCP / IP连接。

答案 1 :(得分:1)

在内部网络上,您只需按照所说,客户端使用服务器的IP地址或给定端口上的主机名连接到服务器。

由于防火墙和NAT,因特网上的互联网可能会非常棘手。例如,您的计算机在家庭网络上的IP地址可能位于“192.168.0.xxx”的某个位置 - 但如果您转到:http://www.whatismyipaddress.com,您将看到您的面向Internet的IP地址完全不同。您将看到的基本上是您的路由器在互联网(WAN)上的IP地址。

所以基本上,服务器必须在他们的路由器上设置端口转发,以便将游戏的端口连接到他的计算机。然后他将不得不为客户提供他面向互联网的IP地址进行连接。

答案 2 :(得分:0)

建立连接的主要标准 - 忽略大量可能的因素,例如防火墙配置等 - 是两台计算机只是在同一网络上。您可能知道以192.168开头的IP地址。总是指本地网络上的计算机,这是您要问的情况,因此如果您在本地网络上连接了两台计算机(例如通过路由器),你知道每台机器的IP地址,那么它真的很简单 - 你用你原来用过的方式连接。实际上,这同样适用于互联网 - 即使您在世界的不同侧面设置了两台机器并且您知道它们的IP地址(同样,忽略了可能更重要的防火墙问题),过程也完全相同。这正是互联网已被证明具有可扩展性的原因,因为定位具有特定IP地址的机器的过程由网络堆栈的较低层处理。

tl; dr:它与您正在进行的操作相同,只需使用适当的IP地址。

答案 3 :(得分:0)

您可以使用公共IP地址,而无需更改有关您自己地址的任何内容,这由连接到互联网的路由器处理。您必须考虑的是防火墙设置。您在套接字中使用的端口应添加到“允许”列表中。通常,默认情况下允许“已建立”流量。这意味着您需要允许传入端口@serveride转到您的服务器。