我正在 Windows 7 上实现一个 TCP/IP 应用程序,它围绕一个套接字 recv() 调用循环。对于少量数据(< 5 MB)它可以正常工作,但对于大数据(> 20 MB),recv 在两者之间失败。
详细信息:我的应用程序需要与运行的 HTTP 服务器通信,两者都在同一台机器上运行,在这个场景中,tcp 应用程序正在向 HTTP 服务器发送大量数据
它给出 error = 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多次,即sender断开;
- 最后,recv 返回 -1,error = 10053。
我的 TCP/IP 应用程序正在向 HTTP 服务器发送数据。同样适用于小数据,但问题来自大量数据。HTTP 服务器超时了吗?