2015-04-26 112 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庫。感謝您的建議。 –