![TCP/IP 转串口 - 串口服务器](https://linux22.com/image/1423249/TCP%2FIP%20%E8%BD%AC%E4%B8%B2%E5%8F%A3%20-%20%E4%B8%B2%E5%8F%A3%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我有一台具有 8 个 COM 端口的服务器,我想通过 TCP 端口访问它,我做了大量研究并尝试了许多解决方案,包括 ser2net 等。不幸的是,所有这些解决方案都不支持多个并发连接,我希望能够将多个客户端连接到每个端口。
我正在使用虚拟机,因此我可以使用任何操作系统,但希望使用轻量级的 Linux 发行版。
感谢任何帮助,谢谢
答案1
目前尚不完全清楚您想要做什么,但可能可以socat
让您从另一台计算机的 TCP 连接访问一台计算机上的串行端口。
看使用 SOCAT 的远程 TTY(TTY OVER TCP)示例
您有一个带有某些串行设备(如调制解调器或蓝牙接口)的主机(调制解调器服务器),您想在另一台主机上使用该设备。(客户端)
1)在调制解调器服务器上启动一个接受网络连接并将其与串行设备 /dev/tty0 链接起来的进程:
$ socat tcp-l:54321,reuseaddr,fork file:/dev/tty0,nonblock,waitlock=/var/run/tty0.lock
2)在客户端启动一个进程,创建一个伪tty并通过tcp连接将其链接到调制解调器服务器:
$ socat pty,link=$HOME/dev/vmodem0,waitslave tcp:modem-server:54321
socat 支持分叉并具有其他可能有助于实现多个并发连接的功能。
上面的例子假设您有一些使用串行连接的客户端应用程序,socat 的客户端实例为本地虚拟串行端口到远程真实串行端口提供了中继的本地端。
如果您的应用程序不需要本地串行端口而是直接通过 TCP 进行通信,那么您就不需要 socat 的本地实例。
对于多个串行端口,您可以启动多个 socat 实例,每个实例可以处理多个连续的连接。