c - 套接字上的 select() 超时

标签 c sockets timeout

在 read FD_SET 里面我有几个套接字:

  1. 监听新连接的主套接字
  2. 已接受套接字监听传入数据。

我将超时设置为 30 秒并调用了 select()。我很快注意到每个人的行为都不同:

  1. 当新客户端连接到监听端口时,它会立即从阻塞状态返回。
  2. 当已连接的客户端发送消息时,它会阻塞整整 30 秒。

有没有办法让它在第二种情况下立即返回?

最佳答案

我的猜测是您没有将所有套接字包含在正确的 fd_set 中,或者您没有将编号最高的文件描述符加 1 作为第一个参数(下面的 nfds)传递给 select 调用。

select(nfds, &readfds, &writefds, &execptfds, &timeout);

关于c - 套接字上的 select() 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1699753/

相关文章:

scala - Apache 弗林克 : Count window with timeout

WCF超时客户端与服务器

c - 一个只调用另一个函数的函数会减慢速度吗?

c - 直接写入不同进程的stdout

R 到 R 通信

java - 在 Java 中发送和接收序列化对象 - Socket 编程

linux - nginx uWSGI 连接到 unix 套接字失败

javascript - 在 CasperJS 中使用eachThen和thenOpen在超时时继续下一个URL

c - getopt(3) 如何工作, 'extern' 变量 optarg 是什么?

c - 数组转换的错误结果