【发布时间】:2012-06-07 15:35:45
【问题描述】:
我在 UDP 套接字上调用 select() 以查看是否有要读取的数据。每次方法返回 -1 并且 errno 设置为 22(无效参数)。这是我的代码的一部分:
fd_set sockets;
struct timeval alarm;
alarm.tv_sec = 0;
alarm.tv_usec = 1000;
FD_ZERO(&sockets);
FD_SET(udpSocket, &sockets);
maxfd = udpsocket + 1;
selected = select(maxfd, &sockets, NULL, NULL, &alarm);
printf("%d\n", selected);
“已选择”始终为 -1。我知道套接字很好,因为此时我已经成功地通过它发送了数据。
【问题讨论】:
-
你能用你初始化套接字和警报的方式更新问题吗?
-
我强烈建议您将
struct timeval alarm重命名为其他名称,恰好有一个同名函数(即alarm())