You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用netcat或socat实现串口设备的一对多网络读写共享?

多设备共享串口的实现方法

方法1:用socat实现多连接串口共享

socat是功能强大的数据流转发工具,能支持多客户端同时连接串口,且支持双向读写。

启动命令

socat TCP-LISTEN:5000,reuseaddr,fork,keepopen FILE:/dev/ttyUSB0,b115200,raw,echo=0
  • TCP-LISTEN:5000:指定监听的网络端口
  • reuseaddr:允许端口快速重用,避免重启时的端口占用问题
  • fork:为每个新连接创建子进程,实现多客户端同时接入
  • keepopen:保持串口设备持续打开,避免客户端断开后重新初始化串口
  • FILE:/dev/ttyUSB0,b115200,raw,echo=0:指定目标串口设备、波特率,启用原始传输模式并禁用回显

客户端只需执行nc <服务器IP> 5000或socat - TCP:<服务器IP>:5000,即可直接对串口进行读写操作。

方法2:配置ser2net实现多客户端访问

ser2net是专门面向串口转网络的工具,自带多客户端支持,配置更灵活。

配置步骤

  1. 编辑ser2net的配置文件(通常为/etc/ser2net.conf),添加以下规则:
5000:raw:600:/dev/ttyUSB0:115200 8DATABITS NONE 1STOPBIT banner
  • 5000:监听端口
  • raw:采用原始数据传输模式
  • 600:客户端无操作超时时间(单位:秒)
  • /dev/ttyUSB0:115200:指定串口设备与波特率
  • 8DATABITS NONE 1STOPBIT:设置串口的数据位、校验位、停止位参数
  • banner:客户端连接时显示提示信息
  1. 重启ser2net服务使配置生效:
systemctl restart ser2net

多个客户端可通过telnet或nc同时连接服务器的5000端口,对串口进行读写。

额外说明

  • 多客户端同时向串口写入数据时,数据流会混合,需确保你的业务协议能处理这种场景,避免数据冲突。
  • 要确保运行工具的用户拥有串口设备的访问权限,可将用户加入dialout组:usermod -aG dialout <你的用户名>

内容的提问来源于stack exchange,提问作者cluberic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 11:04:56