java - Java 局域网游戏

标签 java sockets networking ip lan

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

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

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

最佳答案

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

  • 同一局域网内的两台机器(私有(private)IP)
  • 两台有公网 IP 的机器
  • LAN 中的一台机器和一台具有公共(public) IP 的机器,前提是打开了从 LAN 到公共(public) IP 的连接

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

关于java - Java 局域网游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11890059/

相关文章:

java - 根据唯一键创建不同的 session

c# - TcpClient.Dispose() 是否关闭 TcpClient.GetStream?

c++ - boost::asio::ip::tcp::socket::cancel 和 socket::close 之间有什么不同

Docker 在将 compose 环境从管道部署到服务器时创建与内部网络冲突的 IP 地址

java - 使用 gradle 构建 Java 时跳过部分源代码树

java - 合并两张 map 的最佳做法是什么

c - 端口扫描时的随机端口连接

linux - 如何让 Ubuntu 成功搜索许可证的环境变量?

android - 如何通过有线连接使用 SpaceDesk?

java - Android RecyclerView 滚动性能