我正在尝试创建一个使用 select() 来处理多个客户端的服务器,而不是我已经完成的多线程。然而 select() 似乎什么也没做?我有所有必要的系统调用,例如 socket() 返回一个名为 listener 的 int。bind() 然后 listen(),都带有适当的错误检查,不会返回任何问题。它也编译得很好。
FD_ZERO(&fileDescriptors);
FD_ZERO(&tempSet);
.....
FD_SET(listener, &fileDescriptors);
fdmax = listener;
.....
while(1){
if(select(fdmax+1, &tempSet, NULL, NULL, &timeout) == -1){
//error occured
}
.....
}
客户端无法建立连接,但是 WSAGetLastError() 在客户端返回 0。并且服务器永远不会通过 select(),除了由于超时返回 0。我真的很难在我的代码中看到问题。