使用嵌入式Linux开发板,我需要组合一个执行以下操作的小部件:

  • 通过物理串行端口读取数据包,并将这些数据包中继到多个IP地址(最多20个;从配置文件中读取IP目的地) .

  • 也是'sniff'那些使用自定义程序的串行数据包,可能用 c 编写 .

作为具有编程背景的人,最明显的解决方案(对我而言)是从头开始创建一个 c 程序来实现上述目标 . 但是,因为这是我需要快速拼凑的东西,因为我需要借口来了解有关现有Linux命令行程序和脚本编写的更多信息(我想知道是否可以使用现有命令行实现大部分功能)程序和shell脚本 . 然后,我从头开始写的唯一部分是我的数据包嗅探器(称之为 sniffer.c ) .

我知道 netcatsocat 可以用于设备和地址之间的中继,我已经开始尝试两者 . 我想到,通过运行多个 socat 实例来将TTY端口的串行数据中继到远程IP地址,我可以避免开发和测试TCP / IP软件 . socat 的每个实例都可以处理特定的远程IP地址 .

这听起来是否可行,如果是这样,我怎么能有效地'multiplex'来自 /dev/ttyS0 (比如说)作为 socat 的多个实例的源以及 sniffer.c 的一个实例?可能有一种方法是将从 /dev/ttyS0 读取的数据中继到缓存文件,然后让我的 socat 实例和 sniffer.c 都具有对该文件的只读访问权限吗?