何时会发生阻塞套接字超时?

3
socket模块的文档中写道:

套接字始终在阻塞模式下创建。在阻塞模式下,操作将一直阻塞,直到完成或系统返回错误(例如连接超时)。

此外,这个SO答案说:

默认情况下,如果没有为套接字设置显式超时,则在执行操作时会阻塞,最终会超时并引发异常socket.error:[Errno 110] Connection timed out

我的问题是,在什么情况下一个阻塞的套接字(或者是操作系统?)会引发超时?我能控制这个超时吗,还是唯一能做的就是捕获异常? 编辑 我是否混淆了套接字超时和连接超时?两者有何不同?
1个回答

1
如果您不设置它们,您的操作系统将控制连接超时。在阻塞模式下,TCP/IP有三个不同的超时时间:连接、读取和写入。
要访问连接超时并了解TCP/IP连接的工作原理,您应该查看Linux上的tcp_syn_retries系统配置值。
编辑:连接短语包含一些SYNC“握手”数据包,而读/写短语是一个“正常”的数据包。这就是区别。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接