本次错误在WinSock recvfrom/WSARecvFrom都会出现
这次使用recvfrom函数,在某些情况下总会返回10054的错误,但是程序通信是正常的,所以这个问题可能会导致在某些时候使程序跳出了接收数据的循环部分,而使得不能正常接收到数据。
这是winsock的一个bug,原因请看:http://support.microsoft.com/kb/263823
解决办法,使用WSAGetLastError()来捕捉错误后,进行错误判断,若是错误为WSAECONNRESET 的话,就不做任何处理
res = recvfrom( s, lpszData, dwSize, 0, sockAddr, &nLen);
if (res == SOCKET_ERROR)
{
int derr;
derr = WSAGetLastError();
if(derr != WSAECONNRESET )
{
CString str;
str.Format("recvfrom: error = %d\n",derr );
AfxMessageBox(str);
}
else
return 0;
}
如上所示
本文介绍了在使用WinSock的recvfrom函数时遇到的错误10054的问题,并提供了相应的解决方案。通过使用WSAGetLastError()捕捉错误并进行判断,可以避免因该错误而导致的数据接收中断。
5591

被折叠的 条评论
为什么被折叠?



