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