使用嵌入式 Linux 开发板,我需要组合一个小部件来执行以下操作:
- 通过物理串行端口读取数据包,并将这些数据包中继到多个 IP 地址(最多 20 个;IP 目标从配置文件中读取)。
- 还可以使用自定义程序“嗅探”那些串行数据包,可能是用
c
.
作为具有编程背景的人,(对我来说)最明显的解决c
方案是从头开始创建一个程序来实现上述目标。然而,因为这是我需要快速整理的东西,而且因为我需要一个借口来了解更多关于现有 Linux 命令行程序和脚本编写(我不太擅长)的信息,所以我想知道是否有很多这可以通过现有的命令行程序和 shell 脚本来实现。然后,我从头开始编写的唯一部分是我的数据包嗅探器(调用它sniffer.c
)。
我理解这一点,netcat
并且socat
可以用于设备和地址之间的中继,并且我已经开始尝试两者。socat
我突然想到,我可以通过运行多个实例来将串行数据从 TTY 端口中继到远程 IP 地址,从而避免开发和测试 TCP/IP 软件。每个实例都socat
可以处理一个特定的远程 IP 地址。
这听起来是否可行,如果是这样,我如何有效地“多路复用”来自/dev/ttyS0
(例如)的流作为多个实例的源socat
加上一个实例sniffer.c
?一种方法是将读取的数据中继/dev/ttyS0
到缓存文件,然后让我的socat
实例和sniffer.c
所有人都对该文件具有只读访问权限吗?