2016-09-08 58 views
1

socket模塊的documentation它被寫:阻塞套接字何時會超時?

套接字在阻塞模式總是創建。在阻塞模式中, 操作塊直至完全或系統將返回錯誤(例如 如連接超時)。

此外,this SO answer說:

默認情況下,如果沒有明確的超時時間設置插座,它將 塊,而這樣做,最終超時,提高例外 socket.error: [Errno 110] Connection timed out

我的問題是,在什麼情況下阻塞套接字(或者它是OS?)會引發超時?我可以對這個超時有一些控制,或者我能做的唯一事情就是捕捉異常?

編輯我是否混合連接超時套接字超時?有什麼不同?

回答

1

如果您沒有設置,操作系統控制的連接超時。 TCP/IP在阻塞模式下有三種不同的超時時間:

  • 連接。
  • 閱讀。
  • 寫。

對於連接超時,以及如何TCP/IP連接工作,你應該簽在Linux上tcp_syn_retries sustem配置價值。

編輯:連接短語包含一些SYNC「握手」數據包,而讀/寫短語是「普通」數據包。這是不同的。