【问题标题】:When will a blocking socket timeout?阻塞套接字何时超时?
【发布时间】:2016-09-08 09:09:59
【问题描述】:

socket 模块的documentation 中写道:

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

另外,this SO answer 说:

默认情况下,如果没有为套接字设置显式超时,它将 这样做时阻塞并最终超时,引发异常 socket.error: [Errno 110] Connection timed out

我的问题是,在什么情况下阻塞套接字(或者是操作系统?)会引发超时?我可以控制这个超时,还是我唯一能做的就是捕获异常?

编辑我是否将套接字超时与连接超时混合在一起?有什么区别?

【问题讨论】:

    标签: python sockets connection-timeout


    【解决方案1】:

    如果您不设置它们,您的操作系统将控制连接超时。阻塞模式下的 TCP/IP 有三种不同的超时时间:

    • 连接。
    • 阅读。
    • 写。

    要访问连接超时并了解 TCP/IP 连接的工作原理,您应该查看 Linux 上的 tcp_syn_retries 系统配置值。

    编辑:连接短语包含一些同步“握手”数据包,而读/写短语是“正常”数据包。这就是区别。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-04
      • 2011-02-27
      • 1970-01-01
      • 2012-11-26
      • 1970-01-01
      • 2015-07-30
      相关资源
      最近更新 更多