好的,所以我明白客户端计算机和服务器计算机之间的通信可以通过在两台计算机之间创建套接字来启动,但是我看到的每个教程都取决于最终用户知道他们希望连接的计算机的IP地址。服务器的网络发现
但是,在本地网络LAN游戏中,客户端以某种方式自动检测服务器。这是如何完成的?客户端是否自动检测每个可能的IP,是否有某种“GetDetectedIPs”API等?
我正在寻找可以在标准WIN32 API中以直C实现的答案。请勿使用MFC,.NET或C++。谢谢。
好的,所以我明白客户端计算机和服务器计算机之间的通信可以通过在两台计算机之间创建套接字来启动,但是我看到的每个教程都取决于最终用户知道他们希望连接的计算机的IP地址。服务器的网络发现
但是,在本地网络LAN游戏中,客户端以某种方式自动检测服务器。这是如何完成的?客户端是否自动检测每个可能的IP,是否有某种“GetDetectedIPs”API等?
我正在寻找可以在标准WIN32 API中以直C实现的答案。请勿使用MFC,.NET或C++。谢谢。
您可以让客户端发送一个UDP数据包给指定范围内的每个IP,并让服务器回答另一个UDP数据包。
这通常使用zero-conf来完成。它的微软版本是Simple Service Discovery Protocol。
你需要的技术叫做广播。例如,它用于BOOTP和DHCP协议。
发送一个包含广播目标地址的数据包会导致它被LAN中的所有设备接收到。广播地址是在其中主机标识字段填充有那些IP地址:
bcast_addr = ~netmask | my_addr;
发现过程通常喜欢如下:
也许客户端可能会广播UDP数据包?并且服务器以单播UDP数据包进行响应。 – SKi