使用 netcat/socat

问题描述

我需要通过 TCP 从 ModBus 设备(modbus 从设备)获取数据,但该设备必须作为 TCP 客户端公开(在这种情况下,它消耗的电池电量要少得多)。这意味着两台机器都必须作为 TCP 客户端连接到第三台机器,我必须在两个端口之间建立一座桥,就像这样

[modbus slave] -> [4444:bridge:5555] <- [modbus master]

我确实在网桥机器上用 netcat 尝试过

$ /bin/netcat -lk 5555 | /bin/netcat -lk 4444

它工作了一半:我可以用我的从机连接到 4444,用我的主机连接到 5555,流量从主机流向从机。但是,我没有看到相反方向的任何车辆。这种情况下如何搭建双向桥?

非常感谢!

解决方法

您可以像这样使用 fifo 运行 2 个 netcat 实例:

# mkfifo fifo
# nc -l -p 4444 < fifo | nc -l -p 5555 > fifo

您也可以只使用 socat。

# socat TCP4-LISTEN:4444 TCP4-LISTEN:5555

顺便说一句,我认为运行客户端会比服务器(仅等待传入连接)消耗更多的电量(需要继续连接)。也许我错过了其他一些设计考虑。