c - select() 函数在 winsock 中失败

标签 c select winsock winsock2

我正在制作一个 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)

关于c - select() 函数在 winsock 中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27217056/

相关文章:

free() 函数可以在 c 中级联工作吗

sql - 获取 SQL Server 中列的频率

c - C中Winsock的HTTPS/SSL连接

c - 在 apache2 中重新编译 mod\module

ios - 什么是CFNotificationCenter回调函数观察者?

c - 为什么 printf( "%c", 1) 返回笑脸而不是 1 的编码字符

mysql select 不使用 unicode 字符 a ä, d ḏ, ŋ

Jquery 在下拉菜单上添加 "selected"

c++ - Winsock 接收循环无法正常运行

c++ - inet_ntoa() 和 Windows 用户权限