【问题标题】:LAN Game in JavaJava中的局域网游戏
【发布时间】:2012-08-09 18:52:45
【问题描述】:

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

我想问的问题,如果这是一个愚蠢的问题,请原谅我,我并没有真正受过网络等方面的教育,但是在什么情况下我可以在两台机器之间建立套接字连接。我的意思是,我在一台计算机上运行我的套接字服务器,我希望另一台计算机上的套接字使用第一台计算机的 ip 进行连接。比如说,我的 ip 是“192.1.1.4”,我希望能够连接到那台计算机。是否可以在世界上任意两台计算机之间建立这样的连接?我知道“lan”代表“局域网”,但除此之外我对此一无所知。抱歉,这是一个愚蠢的问题,如果有人需要我,我可以澄清一下。

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

【问题讨论】:

  • 感谢大家的快速回复。欣赏它。

标签: java sockets networking ip lan


【解决方案1】:

您可以在以下之间建立 TCP/IP 连接:

  • 同一局域网中的两台机器(私有 IP)
  • 两台公网IP(互联网)的机器
  • 局域网中的机器和具有公共 IP 的机器,前提是从局域网到公共 IP 的连接已打开

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

【讨论】:

  • 那么如果我有两台机器有私有 IP:machine1 : 192.168.1.5machine2 : 192.168.1.6,我需要打开任何端口,还是我可以将 ip 输入到套接字并连接?
  • 嗨@Cardinal System,您不需要在路由器/网关中打开端口。你需要在一台机器上监听,然后你可以在另一台机器上输入 ip/port 来打开一个套接字。只要确保没有软件防火墙干扰即可。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

    tl;dr:这和你已经在做的一样,只是使用了适当的 IP 地址。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2022-01-06
        • 2012-09-08
        • 1970-01-01
        • 2018-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-10
        • 2015-06-12
        相关资源
        最近更新 更多