阻塞套接字什么时候会超时?

时间:2016-09-08 09:10:00

标签: python sockets connection-timeout

socket模块的documentation中写道:

  

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

此外,this SO answer说:

  

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

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

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

1 个答案:

答案 0 :(得分:1)

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

  • 连接
  • 读取。
  • 写入。

对于连接超时以及TCP / IP连接的工作方式,您应该在Linux上签出 tcp_syn_retries sustem配置值。

EDIT :连接短语包含一些SYNC“握手”数据包,而读/写短语是“正常”数据包。差别就是这样。