在 read FD_SET
里面我有几个套接字:
- 监听新连接的主套接字
- 已接受套接字监听传入数据。
我将超时设置为 30 秒并调用了 select()
。我很快注意到每个人的行为都不同:
- 当新客户端连接到监听端口时,它会立即从阻塞状态返回。
- 当已连接的客户端发送消息时,它会阻塞整整 30 秒。
有没有办法让它在第二种情况下立即返回?
最佳答案
我的猜测是您没有将所有套接字包含在正确的 fd_set 中,或者您没有将编号最高的文件描述符加 1 作为第一个参数(下面的 nfds)传递给 select 调用。
select(nfds, &readfds, &writefds, &execptfds, &timeout);
关于c - 套接字上的 select() 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1699753/