2015-04-26 116 views
0

我有一个GPS跟踪器,它发送两个数据包到我的服务器。首先包含OBD数据,在第二个我们可以找到坐标。我有一个应用程序正在监听特定的端口(Traccar),但它只捕获第二个数据包(支持没有坐标的数据包尚未实现)。 我想要捕获这些数据包,读取OBD数据并将它们插入到SQL数据库中。我可以通过使用tcpdump手动执行此操作,但这当然不是解决方案。什么是解决这个问题的最好和最有效的方法?我应该使用popen()打开一个管道到tcpdump吗?有没有其他方法?简单的数据包捕获

回答

2

管道'tcpdump:根据我的经验,解析命令/程序的输出总是有风险的。输出格式可能会根据程序的版本,运行的平台以及使用的LOCALE而改变。这些惊喜会在您部署软件时出现。

对于更多的编码,第二个选项是嵌入tcpdump的内部消息,也就是说libpcap。这并不难,简要介绍在这里:

http://www.tcpdump.org/pcap.html

...这将是清洁的,但像使用tcpdump,你会“上的电线裸露”的,只是看到以太网帧,无您可能需要的IP,TCP,UDP等层。

但这些(tcpdump或libpcap)是解决方法。

由于Traccar是开源的,您是否调查了添加所需功能的工作量?在这种情况下,我会花上几个小时来调查。

+0

我没有足够的经验来使用像Traccar这样的开源软件。但我打算使用pcap库。感谢您的建议。 –