考虑一下/var/run/acpid.socket。在任何时候,我都可以连接到它,并断开它。将其与nc进行比较:
$ nc -l -U ./myunixsocket.sock
Ncat: bind to ./myunixsocket.sock: Address already in use. QUITTING.nc显然只允许单用途套接字。问题是,如何创建类似于/var/run/acpid.socket的套接字,以便进行多次使用和重用?
发布于 2018-09-21 12:16:53
您可以使用-k选项对nc执行此操作。
-k迫使nc在它的cur- rent连接完成后继续监听另一个连接.如果不使用-l选项,则使用此选项是错误的。当与-u选项一起使用时,服务器套接字没有连接,它可以从多个主机接收UDP数据。
示例:
$ rm -f /tmp/socket # unlink the socket if it already exists
$ nc -vklU /tmp/socket # the server
Connection from mack received!
yes
Connection from mack received!
yes
...建议在使用后对套接字进行unlink() --但是,实际上,大多数程序都会检查它是否存在,并在对其调用bind()之前删除它;如果套接字路径存在于文件系统中,并且试图对其进行bind(),那么即使没有程序以任何方式使用它,您也会得到一个EADDRINUSE错误。
在linux上避免这种混乱的一种方法是使用“摘要” unix套接字,但它们似乎不受netcat的支持。
https://unix.stackexchange.com/questions/470459
复制相似问题