没有集中主机的网络通信。可能吗?

Network communication without a centralized host. Is it possible?

我有一个服务器和几个客户端,在软件方面,我希望客户端在不实际引用特定数据库的情况下找出服务器的 IP 地址。

之前我对 UDP 有一个误解,认为 UDP 只使用端口作为服务器和客户端之间的公共标识符,但显然我错了。

要求: 我希望我的服务器每 5 秒左右向网络上的所有设备广播一条消息。 该消息将包含服务器的 IP。

已经使用这种技术的软件: iOS 的一个名为 "Photo Transfer App" 的照片传输应用程序非常易于使用,因为它基本上会告诉您在 Mac 和 iPhone 上打开该应用程序,然后您按 "Discover",砰!您的设备已找到彼此。 但是怎么办?

如何实现我的要求?

编辑 我用谷歌搜索了一下。 255.255.255.255 上的服务器主机和连接到该地址的客户端能否解决我的问题?

According to this Wikipedia article,255.255.255.255用于广播

有人可以确认吗?

Multicast would be better than broadcast. See also: Bonjour, multicast DNS & SSDP.

有关 Bonjour 的更多信息是 available here

如果您将使用广播地址 (255.255.255.255) 或网络广播(如网络 192.168 的 192.168.1.255。1.xxx 或前缀符号 192.168.1.0/24)。您将受到基本限制:您的广播将永远不会离开该网络。所以局域网内的所有主机都会看到您的广播消息,但没有其他人。

null 提到的多播更好,因为它可以离开您的网络并通过 IP 路由器。但这只有通过该路由器上的特殊网络设置才可行(并且需要该路由器上的多播路由功能)。

可以使用的另一种不受此限制的技术是动态 DNS(服务器将通过 DNS 自行注册)。