linux - 双向套接字到 TCP 通信

标签 linux sockets tcp serial-port socat

我有一个软件 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/

相关文章:

适用于 Windows 和 Linux 的 c++ xml、tcp/ip 库

linux - 如何在 Azure Linux Web 应用程序上托管 Angular

linux - 两个整数之间的 Bash 值,不是 float

java - TCP 扫描 : Unexpected Socket Exceptions

java - 套接字 - 软件导致连接中止 : recv failed

java - 用于 Java 客户端/服务器应用程序的 HTTP 或 FTP

linux - kvm 中如何进行设备模拟

C 为什么 txt 文件上的简单 fgets 占用高 cpu 使用率?

python - 如何关闭在while循环中监听线程的阻塞套接字?

sockets - 是重用连接更好,还是更新连接以频繁发送数据更好?