我有一个server
有 2 个连接SOCKET
的连接,clients
我将其设置server
为非阻塞模式,在发送或接收消息时不会停止。我想为每个连接设置超时SOCKET
,但如果我使用以下代码:
void getMessage(SOCKET connectedSocket, int time){
string error = R_ERROR;
// Using select in winsock
fd_set set;
timeval tm;
FD_ZERO(&set);
FD_SET(connectedSocket, &set);
tm.tv_sec = time; // time
tm.tv_usec = 0; // 0 millis
switch (select(connectedSocket, &set, 0, 0, &tm))
{
case 0:
// timeout
this->disconnect();
break;
case 1:
// Can recieve some data here
return this->recvMessage();
break;
default:
// error - handle appropriately.
break;
}
return error;
}
我的服务器不再是非阻塞模式!我必须等到第一个连接超时才能从第二个连接收到消息!这不是我所期望的!那么,有没有办法为非阻塞模式设置超时?还是我必须自己处理?