【发布时间】:2014-10-10 20:41:38
【问题描述】:
我正在创建多个套接字以在客户端上发送 UDP 广播。在客户端上,我还使用阻塞 recvfrom() 调用来获取回复的服务器的 IP 地址。我决定为每个 recvfrom() 调用创建一个线程,因为服务器可能没有回复,这会让我陷入困境。我还在创建另一个线程以跟踪时间并退出程序。假设我设置了 5 秒的时间限制。我有时会收到错误 10004 -> http://support.ipswitch.com/kb/WSK-19980714-EM08.htm
因为我在阻塞调用中结束程序
您是否认为仅检测是否发生了此特定错误而什么都不做就可以了。处理此问题的最佳方法是什么?
即。
if((recvfrom(socket, (char *)buffer, size, 0, (struct sockaddr *) &fromAddr, &fromAddrLen)) == SOCKET_ERROR)
{
if(WSAGetLastError() == 10004)
//do nothing
else
printf("\nrecvfrom() failed with error code : %d" , WSAGetLastError());
}
【问题讨论】:
标签: visual-c++ winsock