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强制要求的。大多数实现甚至不允许您更改发送超时。