select()函数在winsock中失败

问题描述 投票:0回答:1

我正在制作一个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。 我做错了什么?

c winsock winsock2 posix-select
1个回答
3
投票

简单的错字:

if (t = SOCKET_ERROR)

应该是:

if (t == SOCKET_ERROR)
© www.soinside.com 2019 - 2024. All rights reserved.