gpt4 book ai didi

在 UDP 套接字上调用 select() 会产生无效参数错误

转载 作者:太空宇宙 更新时间:2023-11-04 06:39:09 26 4
gpt4 key购买 nike

我正在 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。我知道套接字没有问题,因为此时我已经成功地通过它发送了数据。

最佳答案

根据 select 的手册页,EINVAL 表示“nfds 为负数或超时中包含的值无效”,这表明 udpsocket- 2 或更少。

一个可能的提示:您在 fd_set 中设置了 udpSocket,然后使用 udpsocket 来计算 maxfd。拥有两个仅在单个字符的情况下不同的变量很容易被遗漏。

关于在 UDP 套接字上调用 select() 会产生无效参数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10935071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com