如何直接通过 TCP 公开 UNIX 域套接字

Sim*_*een 16 linux ubuntu tcp socket

我想要一个 UNIX 域套接字,例如 /var/program/program.cmd,通过 TCP 公开,比如说在端口 12345 上。我也希望它在后台全时运行。

做到这一点的最佳方法是什么?如果相关,则系统正在运行 Ubuntu 12.04.2。

同样使用建议的解决方案,它是否会在删除和重新创建域套接字后继续存在?

编辑

以下是 init 脚本形式的已接受答案的结果:https : //github.com/Wirehive/haproxy-remote

Kha*_*led 22

您可以使用socat将您的 unix 套接字导出为 TCP 套接字。这是执行此操作的命令:

socat TCP-LISTEN:12345 UNIX-CONNECT:/var/program/program.cmd
Run Code Online (Sandbox Code Playgroud)

这将创建 TCP 套接字侦听端口 12345,它将连接到您程序的上述 unix 套接字。

对于删除问题,我没有自己测试。您可以验证它并告诉我们它:)

注意: 你可能没有发现安装了socat,你只需要输入:apt-get install socat来安装它。

  • 感谢这非常有效,尽管它在每次通信后退出。在玩弄之后,我取得了很好的成功:`socat TCP-LISTEN:12345,reuseaddr,fork,su=haproxy UNIX-CLIENT:/var/program/program.cmd`。唯一的问题是我如何让它在后台运行? (3认同)