【发布时间】:2009-11-06 02:29:47
【问题描述】:
我正在尝试创建一个使用 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。 我真的很难在我的代码中看到问题。
【问题讨论】:
标签: c windows network-programming winsock select-function