我刚刚编译了这段代码:http: //www.win32developer.com/tutorial/winsock/winsock_tutorial_2.shtm
我添加了一些代码,因此它在无限循环中执行recv().我的问题,如果没有数据要读,它仍然没有阻止.
如果我认为recv应该阻止我的情况,我完全错了吗?
我添加的代码是:
for(;;)
{
char buffer[1000];
memset(buffer,0,999);
int inDataLength = recv(Socket,buffer,1000,0);
int nError=WSAGetLastError();
if(nError!=WSAEWOULDBLOCK&&nError!=0)
{
std::cout<<"Winsock error code: "<<nError<<"\r\n";
std::cout<<"Client disconnected!\r\n";
// Shutdown our socket
shutdown(Socket,SD_SEND);
// Close our socket entirely
closesocket(Socket);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
它结束了,在线之后std::cout<<"Client connected!\r\n\r\n";.我知道我从一个"非阻塞"的例子中复制了这个,但我不认为这个代码应该做任何非阻塞的事情,但是,我的for循环运行得像疯了!
| 归档时间: |
|
| 查看次数: |
10203 次 |
| 最近记录: |