Select 模型
以下是服务端的Select部队,我在客户端发送一个字符串“hellow”,然后客户端退出,为什么在服务器端一直循环显示“hellow”。我不明白为什么执行过一次recv之后,FD_ISSET()还会有效,也就是说为什么hConnected还处于有数据接收的状态(而此时客户端已退出)?
其中,hConnected是一个已连接的SOCKET。
while(1)
{
fd_set fd;
FD_ZERO(&fd);
FD_SET(hConnected, &fd);
nRet = select(0, &fd, NULL, NULL, NULL);
if(FD_ISSET(hConnected, &fd))
{
char buf[30];
int nBytes = recv(hConnected, buf, 30, 0);
buf[nBytes] = '\0';
cout << buf << endl;
}
}