“保持”套接字打开时间过长会导致产生新套接字

“保持”套接字打开时间过长会导致产生新套接字

我通过以下方式连接到套接字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 内部结构。

答案1

unix-sockets 中没有任何东西可以自动关闭连接。服务器或客户端必须关闭它。 Netcat 有一个-w选项提到手册:

如果连接和标准输入空闲时间超过超时秒,则连接将被静默关闭。 -w 标志对 -l 选项没有影响,即 nc 将永远侦听连接,无论有或没有 -w 标志。默认是没有超时的。

但您没有指定此选项,因此 netcat 默认情况下无限期地保持连接打开。

许多服务器在连接上设置了隐式超时。这是为了防止写得不好的客户咀嚼资源。或者,也可能是某些原因正在重置您正在连接的服务器。这将导致它关闭所有连接。

从你的问题中我不确定这个端口到底是什么。但简而言之,与其说这是一个 linux/unix 的东西,不如说是一个 xmpp 的东西。

相关内容