当我连接到一个 Unix 命名套接字时,在什么情况下我可能会收到 ETIMEDOUT?
如果服务器在 N 秒内没有接受(),那么 Linux 上典型的 N 是多少?
最佳答案
如果服务器的操作系统在 N
秒内不接受连接,就会发生这种情况。服务器应用程序调用 accept()
通常不相关,因为操作系统会自动执行 3 次握手,无论应用程序是否调用 accept()
; TCP 堆栈将挂起的连接排队,直到应用程序执行此操作(达到积压限制)。
因此通常只有在服务器物理停机或网络通信错误时才会发生此超时。
我认为 Linux 上的默认值是 20 秒。
关于linux - 什么时候发生套接字超时? (Unix),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39649630/