使用recvfrom()函数,返回10054错误的问题
2012-11-09 00:43
387 查看
本次错误在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;
}
如上所示
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;
}
如上所示
相关文章推荐
- socket错误使用recvfrom 返回-1的问题
- Mysql CONVERT_TZ 函数使用及返回NULL解决方案(时区转换问题)
- Windows UDP socket recvfrom返回10054错误的解决办法
- 关于Android开发中使用System.exit(0)的问题(如写返回键响应时用到双击退出函数的时候)
- 【转载】PHP使用empty检查函数返回结果时报Fatal error: Can't use function return value in write context的问题
- [Linux流操作]使用feof和ferror函数判断当前返回的错误
- PHP使用empty检查函数返回结果时报Fatal error: Can't use function return value in write context的问题
- windows socket编程中调用recvfrom返回-1(windows error 10014)错误的问题
- 64位平台上,函数返回指针时遇到的段错误问题
- PHP中使用了mcrypt_decrypt函数处理Json串后导致Json_decode返回null问题
- PHP使用empty检查函数返回结果时报Fatal error: Can't use function return value in write context的问题
- c/c++使用指针做函数返回值和指针作函数参数问题
- 在使用了MasterPage后,FindControl()函数返回null的问题
- PHP使用empty检查函数返回结果时报Fatal error: Can't use function return value in write context的问题
- c/c++使用指针做函数返回值和指针作函数参数问题
- PHP使用empty检查函数返回结果时报Fatal error: Can't use function return value in write context的问题
- 一个关于WCF调用远程链接返回405错误不允许使用此方法的问题
- 使用Volley StringRequest返回String 编码格式错误乱码问题解决
- j解决sparkr中使用某些r的原生函数 发生错误Error: class(objId) == "jobj" is not TRUE的问题
- Android NDK使用addr2line符号化得到错误函数名的问题