套接字默认超时



Subj. 奇怪的是,我在Windows或POSIX的套接字参考文档中找不到它。

出于问题的目的,我谈论的是影响套接字 API 调用的任何超时,即控制 API 调用返回错误的时间的任何值。因此,排除了类似TIME_WAIT的内容,因为它只影响系统状态而不是程序的控制流。这个问题的灵感来自关闭的 unix 套接字上的 kill socket.accept() 调用,其中 OP 声称accept将永远等待 - 我不相信。

  • AFAICS,有两种:用于接收和用于发送,它们不仅影响send/recv,而且影响所有涉及接收或发送的API,例如accept

更具体地说:

  • 它是由某些规范强制要求的还是完全由操作系统供应商决定的?
  • 主要操作系统1的默认值是什么?至少,数量级。 如果
    • 可在系统范围内配置,它们存储在哪里(如果有很多可能性 - 来自内核/库存库的 POV)?

1 例如 Windows、Debian、Red Hat、FreeBSD、Mac OS X、Android。

如果你谈论的是 BSD 套接字 API 中的 API 操作或基于它构建的系统或类似它,则接受、发送和接收默认超时是无限的。这是由BSD Sockets API和Winsock强制要求的。大多数实现甚至不允许您更改发送超时。

最新更新