我在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