首页 > 解决方案 > 如何使用 xinetd 通过 TCP 将管道传输到另一个程序的标准输入

问题描述

如果我的措辞有点难以理解,我深表歉意——我对这一切都很陌生。我在 Pi Zero 上有一个名为fx2pipe的程序,它与某个电子设备通信。所述设备的指令由另一台机器上的 Windows 程序编译,我想通过 TCP 将这些指令逐字节发送到 Pi,直接发送到fx2pipe的标准输入。我尝试使用xinetd使用套接字激活来打开 Pi 上的端口 2246 以侦听 TCP 数据包,启动fx2pipe请求连接时使用正确的参数,并将指令通过管道传输到其标准输入中,但每次我这样做时,什么都没有发生。我已经验证了我实际上可以通过通过 TCP 进行二进制传输并手动将输出网络化到fx2pipe来使一切正常工作,但是我希望xinetd每次单击 Windows 程序上的“发送”按钮时自动为我执行此操作. 例如,我可以从 Windows 中点击“发送”并nc -l 2245 | sudo fx2pipe (some device ID stuff) -o在终端中输入,一切正常(-o标志命令fx2pipe接收输入,而 2245 是我仅用于测试目的的另一个端口)。有没有办法用xinetd做到这一点?这是我的xinetdfx2pipe的配置文件的价值:


{
    id = fx2pipe
    disable = no
    socket_type = stream
    protocol = tcp
    wait = no 
    user = root
    server = /usr/local/bin/fx2pipe
    server_args = -d=0x4b4:0x888a[:0] -o
    port = 2246
} 

任何类型的解决方案都值得赞赏。

标签: raspbiansockets

解决方案


推荐阅读