java - 客户端如何找到服务器的端口号?

标签 java client-server

我目前正在学习java中的基本网络。 我一直在研究两台计算机之间的服务器和客户端关系。 但是,我无法弄清楚分布式程序(例如视频游戏)如何不仅可以找到“主机”计算机,还可以找到运行服务器的端口号,以便在两台计算机之间创建套接字。我真正看到创建套接字的唯一方法是使用已知的 IP 地址和已知的端口号。

如何在 LAN 网络中搜索另一台正在搜索客户端的计算机(主机)?

如何确定服务器所在的端口而不“ping”所有可用端口以获取响应(据我所知,这是不好的形式......有关“服务器攻击”的内容......)?

在视频游戏这样的情况下,同一网络上可以有任意数量的计算机,并且其中任意数量的计算机可能正在尝试托管或以其他方式运行应用程序。关于在客户端如此少的信息上建立连接的任何其他重要信息,或者可能引用比我正在使用的更详细的教程,我们将不胜感激。

非常感谢,

乔纳森

最佳答案

通常,服务/方案具有给定的端口号或它们使用的端口号范围(HTTP 使用 80,SSH 使用 22 等)。此外,他们可能会连接到“主”服务器,以宣布他们的存在并了解其他节点(例如,Battle.net)。

如果使用 Zeroconf(通过 Bonjour、Avahi 等),则这些都不是严格需要的。 Zeroconf 允许机器在 LAN 上执行多播 DNS,而不是传统上用于 DNS 的点播机制。这使他们能够发现网络上也支持 mDNS 的计算机,并发现在这些计算机上运行的服务。

关于java - 客户端如何找到服务器的端口号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2558363/

相关文章:

java - 根据角度和速度更新坐标

Java - 从服务器再次向客户端请求密码

c - C中非常简单的服务器

java - 带有序列号的 UDP

java - 从字符串中提取数字并保留空格

java - Appium 解锁在某些设备上不起作用 [Android]

sockets - 设计模式: Client - Server

java - 为什么客户端看不到服务器发送的第一条消息?

java - Bukkit - 插件未加载 - 主要错误

java - 无法从 firestore 中删除字段