我在Windows 7上实现了一个TCP/IP应用程序,它围绕套接字recv()调用进行循环。对于少量数据(< 5 MB)它可以正常工作,但对于大数据(> 20 MB),recv会在两者之间失败。套接字编程更新:recv返回-1,错误= 10053
详细说明:我的应用程序的需要,TCP应用程序正在发送大量的数据,以HTTP服务器与HTTP服务器的运行进行通信,同一台机器上都运行,在此之情况
它给误差= 2,的recv返回0
错误2意味着ENOENT,但它意味着什么?。有谁知道这是什么(关于套接字)以及我如何解决这个问题?
msgLen = recv(s,msg,BUFFER_SIZE,0);
if(msgLen > 0)
{
// do processing
}
else
{
printf("\n no data received .... msgLen=%d",msgLen);
printf("\n no data received .... errno=%d",errno);
}
更新代码按照评论
msgLen = recv(s,msg,BUFFER_SIZE,0);
if(msgLen > 0)
{
// do processing
}
else if(msgLen == 0)
{
printf("\n sender disconnected");
}
else
{
printf("\n no data received .... msgLen=%d",msgLen);
printf("\n no data received .... errno=%d",WSAGetLastError());
}
我现在得到的错误是:
- 首先,RECV = 0多次,即发送者断开;
- 最后的recv返回-1,错误= 10053.
我的TCP/IP的应用程序将数据发送到HTTP服务器。对于小数据同样适用,但问题伴随着大量数据。 HTTP服务器是否超时?
您是否使用WSAGetLastError()来获取错误代码? Windows不使用'errno'。 – 2013-03-15 13:24:11
@roger_rowland好吧,我会检查WSAGetLastError()并尽快更新。 – RDX 2013-03-15 16:54:58