在socket
模块的documentation中写道:
套接字始终以阻塞模式创建。在阻止模式下, 操作阻塞直到完成或系统返回错误(例如 当连接超时时。)
此外,this SO answer说:
默认情况下,如果没有为套接字设置显式超时,它将会 阻止这样做并最终超时,引发异常
socket.error: [Errno 110] Connection timed out
我的问题是,在什么情况下阻塞套接字(或操作系统?)会引发超时?我可以控制这个超时,或者我唯一能做的就是捕获异常吗?
编辑我是否将套接字超时与连接超时混合?有什么区别?
答案 0 :(得分:1)
如果未设置,操作系统将控制连接超时。阻塞模式下的TCP / IP有三种不同的超时:
对于连接超时以及TCP / IP连接的工作方式,您应该在Linux上签出 tcp_syn_retries sustem配置值。
EDIT :连接短语包含一些SYNC“握手”数据包,而读/写短语是“正常”数据包。差别就是这样。