我有一台GPS追踪器正在向我的服务器发送两个数据包。第一个包含OBD数据,在第二个我们可以找到坐标。我有一个应用程序正在侦听特定端口(Traccar),但它只捕获第二个数据包(支持没有坐标的数据包尚未实现)。 我想捕获这些数据包,读取OBD数据并将它们插入SQL数据库。我可以通过使用tcpdump手动完成,但当然这不是解决方案。解决这个问题的最佳和最有效的方法是什么?我应该使用popen()打开tcpdump的管道吗?还有其他办法吗?
答案 0 :(得分:2)
管道' tcpdump:根据我的经验,解析命令/程序的输出总是有风险的。输出格式可能会根据程序的版本,运行的平台以及使用的LOCALE而改变。当您部署软件时,会出现这些惊喜。
对于更多的编码,第二个选择是嵌入tcpdump的内容,即libpcap。它不是那么难,在这里快速介绍一下:
http://www.tcpdump.org/pcap.html
...它会更干净,但仍然像tcpdump一样,你将会在电线上裸露,只看到以太网帧,没有你可能使用的IP,TCP,UDP等层需要。
但是这些(tcpdump或libpcap)是解决方法。
由于Traccar是开源的,您是否调查了添加所需功能的工作量?在这种情况下,我花了几个小时来调查这一点。