Socket

“保持”一個套接字打開時間過長會導致一個新的生成

  • July 26, 2021

我通過以下方式連接到套接字nc -U

user@node:~$ sudo nc -U service\@name.18822.sock
user@node:~$ xmpp.status
user@node:~$ connected

如果我“保持”這個連接打開的時間過長,它會將我踢回 CLI 並產生一個新的套接字。如果我只是將命令回顯到套接字中,例如:

echo xmpp.status | sudo nc -U service\@name.18822.sock

然後永遠不會產生新的套接字。我想知道為什麼會存在這種行為,因為我認為它與程序相關的較少,而更多的是 Unix/Linux 內部。

unix-sockets 中沒有任何東西會自動關閉連接。伺服器或客戶端必須關閉它。Netcat 有手冊-w中提到的一個選項:

如果連接和標準輸入的空閒時間超過 timeout 秒,則連接會靜默關閉。-w 標誌對 -l 選項沒有影響,即 nc 將永遠監聽連接,無論有無 -w 標誌。預設為無超時。

但是您沒有指定此選項,因此預設情況下 netcat 會無限期地保持連接打開。

許多伺服器在連接上設置了隱式超時。這是為了防止編寫不佳的客戶端咀嚼資源。或者,有可能正在重置您要連接的伺服器。這將導致它關閉所有連接。

從你的問題中我不確定這個埠到底是什麼。但簡而言之,這並不是一個真正的 linux/unix 事情,而是 xmpp 事情。

引用自:https://unix.stackexchange.com/questions/660050