0xA*_*ffe 4 sockets linux networking
对于使用串行端口进行通信的应用程序(确切地说是Modbus RTU),我需要在网络上桥接串行端口以进行测试。
因此,我想进行以下设置:
Device | Network | PC
SerialPort |------------------| SerialPort
Map Serialport| | Map network to Serialport
to Network | |
Run Code Online (Sandbox Code Playgroud)
我已经开始使用socat
。
我在PC上打开了TCP端口
nc -l 8080
Run Code Online (Sandbox Code Playgroud)
在我使用的设备上
socat pty,link=/dev/virtualcom0 tcp:PC-IP:8080
Run Code Online (Sandbox Code Playgroud)
要将写入的所有内容映射/dev/virtualcom0
到端口8080 上的PC-IP。
但是现在我在将套接字映射回Serialport时遇到了问题。
socat tcp:PC-IP:9123 pty,link=/dev/virtualport0
Run Code Online (Sandbox Code Playgroud)
这给了我一个Connection Refused
,这很明显,因为我使用了TCP,并且该端口已被设备使用。
所以我尝试了
socat pty,link=/dev/virtualcom0,raw udp:PC-IP:8080
Run Code Online (Sandbox Code Playgroud)
并将其他所有内容都更改为UDP。
但是,那时/dev/virtlalcom0/
我的电脑上什么也没到达。
tcp连接的一侧需要监听端口(您启动的第一个端口),第二侧连接到该端口。
对于第一面,请执行以下操作:
socat tcp-listen:8080 pty,link=/dev/virtualport0
Run Code Online (Sandbox Code Playgroud)
对于第二面,请执行以下操作:
socat pty,link=/dev/virtualcom0 tcp:IP-of-other-machine:8080
Run Code Online (Sandbox Code Playgroud)
忘了netcat,您不需要它。