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