我的客户端正在向子网上的所有服务器发送UDP广播。每个服务器都将回复客户端,以便客户端可以获取/存储服务器的IP地址。并非所有服务器都会收到消息(可能是因为UDP?)。当找到服务器的新IP地址时,最好的方法是将计数器增加到广播吗?
另一个问题是目前在客户端,它一次只能收到1条消息。是否可以同时接收多条消息?
这是我的客户代码:
if (recvfrom(Socket, receiveBuffer, BUFLEN, 0, (struct sockaddr *) &connectedSocket, &length) == SOCKET_ERROR)
{
printf("\nrecvfrom() failed with error code : %d" , WSAGetLastError());
closesocket(Socket);
WSACleanup();
exit(EXIT_FAILURE);
} else {
printf("\nServer Says : ");
printf("\n\nI am from %s:%d\n", inet_ntoa(connectedSocket.sin_addr), ntohs(connectedSocket.sin_port));
}
答案 0 :(得分:0)
发送广播后,启动计时器并让它运行5到30秒。在此期间,处理您收到的任何回复。当计时器过去时,停止处理任何更多的回复,只要你碰巧收到它们就丢弃它们。
不,UDP套接字无法一次为您提供多个数据报,您必须单独阅读它们。