在我的服务器上使用 Socat 我有当前命令:
socat -u tcp-l:7767,fork system:/app/getmsg.sh
所有 getmsgh.sh 所做的是:
read MESSAGE
echo $MESSAGE
Run Code Online (Sandbox Code Playgroud)
我试图找出一种让客户端发送消息并接收 getmsg.sh 输出的方法
在客户端尝试:
echo "hello" | socat -t 30 tcp:localhost:7767 -
Run Code Online (Sandbox Code Playgroud)
似乎不起作用。它显示在服务器上,但不在客户端上。看来如果你尝试向客户端传递消息 socat 想立即退出
问题是-u服务器端的选项。手册页中-u选项的含义socat:
使用单向模式。第一个地址仅用于读取,第二个地址仅用于写入
因此,tcp-l:只读取system:一侧,只写入一侧,而不是双向连接(这是默认设置)。删除该-u选项会使问题中的示例起作用。