我有一个软件 X 监听和写入 TCP 端口。 IE。它创建一个服务器套接字和一个读取和写入 TCP 的客户端。
我有一个串行设备 ttyUSB0,它可以接受提供软件 X 的格式的数据并将数据发送回串行。
我想将数据从串口传送到 TCP,反之亦然,这样它看起来对软件 X 和串口 ttyUSB0 是透明的。
我正在尝试使用 socat。喜欢,
socat -d -d -d -d -x TCP-LISTEN:7758,fork,reuseaddr FILE:/dev/ttyUSB0,b9600,raw
但是好像不行。看起来好像 TCP 端口上的监听器阻止绑定(bind)。我有
E bind(3, {AF=2 0.0.0.0:7758}, 16): Address already in use
有人可以帮我解决我的问题吗?
最佳答案
正如一些评论者已经提到的,您不能与两个监听器建立 TCP 连接。对于 TCP 连接,您始终需要服务器(监听器)和客户端。
因为您的软件已经是服务器(监听端口 7758),所以 socat 应该以客户端模式运行(连接到您的服务器)。
这可以通过选项 TCP:<host>:<port>
来完成,例如像这样(改编了您的示例,未测试!):
socat -d -d -d -d -x TCP:localhost:7758 FILE:/dev/ttyUSB0,b9600,raw
关于linux - 双向套接字到 TCP 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20043776/