好的,所以我知道客户端计算机和服务器计算机之间的通信可以在 Windows 中通过在两台计算机之间创建套接字来启动,但是我看到的每个教程都取决于最终用户知道计算机的 IP 地址他们希望连接的。
然而,在本地网络 LAN 游戏中,客户端会以某种方式自动检测服务器。这是怎么做到的?客户端是否自动检查每个可能的 IP,是否有某种“GetDetectedIPs”api 等?
我正在寻找可以在标准 WIN32 API 中直接用 C 实现的答案。请不要使用 MFC、.NET 或 C++。谢谢你。
好的,所以我知道客户端计算机和服务器计算机之间的通信可以在 Windows 中通过在两台计算机之间创建套接字来启动,但是我看到的每个教程都取决于最终用户知道计算机的 IP 地址他们希望连接的。
然而,在本地网络 LAN 游戏中,客户端会以某种方式自动检测服务器。这是怎么做到的?客户端是否自动检查每个可能的 IP,是否有某种“GetDetectedIPs”api 等?
我正在寻找可以在标准 WIN32 API 中直接用 C 实现的答案。请不要使用 MFC、.NET 或 C++。谢谢你。
您需要的技术称为广播。例如,它用于 BOOTP 和 DHCP 协议中。
发送带有广播目标地址的数据包会导致 LAN 中的所有设备都接收到该数据包。广播地址是一个 IP 地址,其中主机标识字段用 1 填充:
bcast_addr = ~netmask | my_addr;
发现过程通常如下:
您可以让客户端向指定范围内的每个 IP 发送一个 UDP 数据包,并让服务器用另一个 UDP 数据包应答。