我正在制作一个udp客户端。我正在使用 select 函数来实现超时:
FD_ZERO(&stReadFDS);
FD_SET(clientSock, &stReadFDS);
int t = select(1, &stReadFDS, NULL, NULL, &sTimeOut);//first parameter of select is ignored in winsocks
if (t = SOCKET_ERROR) {
fprintf(stderr, "Call to select() failed");
exit(1);
}
if (t != 0) {
if (FD_ISSET(clientSock, &stReadFDS)) {
//recvfrom(...)
}
}
每次 select func 都会返回 SOCKET_ERROR。 我做错了什么?
简单的错字:
if (t = SOCKET_ERROR)
应该是:
if (t == SOCKET_ERROR)