0
全部 我正在使用一個非阻塞Socket來發送messages.We得到EGAIN錯誤occassioanally。所以我決定使用Flush(套接字)來沖洗緩衝區並使空間對於新的空間,以便我可以避免EGAIN錯誤。但問題是Flush(套接字)卡住了無限期的時間。嵌套Socket阻塞非阻塞SocketHi
下面是代碼
int res = send(socket, buffer, size+lengthSize,0);
delete buffer;
if (res== -1)
{
int error = errno;
cout("ERROR on SendOnPortString, errno = " << error);
return 0 ;
}
else
{
cout<<"Send SucessFul = " << res << "Total Message size"<< size+lengthSize;
if(res==size+lengthSize)
flush((ostream&)socket);
//flush(socket);
return 1 ;
}
此代碼打印 發送SUCESSFUL = 11Total消息大小11
但在此之後其被陷在沖洗(插座)方法。任何知道爲什麼它的行爲就像該
它會回覆'EAGAIN',如果它因任何原因而阻塞。你沒有提到你的平臺;如果它是開放的,只需檢查內核源代碼。爲什麼不必要地猜測? – 2010-10-28 15:02:31