Простой захват пакетов

У меня есть GPS-трекер, который отправляет два пакета на мой сервер. Первый из них содержит данные OBD, во втором мы можем найти координаты. У меня есть приложение, которое прослушивает определенный порт (Traccar), однако оно перехватывает только второй пакет (поддержка пакетов без координат еще не реализована). Я хотел бы захватить эти пакеты, прочитать данные OBD и вставить их в базу данных SQL. Я могу сделать это вручную с помощью tcpdump, но, конечно, это не решение. Как лучше и эффективнее решить эту проблему? Должен ли я использовать popen(), чтобы открыть канал для tcpdump? Есть ли другой способ?


person Tomasz Kasperczyk    schedule 26.04.2015    source источник


Ответы (1)


Конвейер tcpdump: по моему опыту всегда рискованно анализировать вывод команды/программы. Формат вывода может меняться в зависимости от версии программы, платформы, на которой она работает, и используемой LOCALE. Эти сюрпризы возникают при развертывании программного обеспечения.

Чтобы немного больше кодировать, вторым вариантом было бы встроить внутренности tcpdump, то есть сказать libpcap. Это не так сложно, краткое введение здесь:

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

... это было бы чище, но все же, как и в случае с tcpdump, вы будете «голым на проводе», просто видя кадры Ethernet, без слоев IP, TCP, UDP и т. д., которые могут вам понадобиться.

Но это (tcpdump или libpcap) обходной путь.

Так как Traccar является продуктом с открытым исходным кодом, изучали ли вы объем работы по добавлению требуемой функции? В этой ситуации я бы потратил пару часов на расследование.

person jbm    schedule 24.08.2015
comment
У меня недостаточно опыта для работы с программным обеспечением с открытым исходным кодом, таким как Traccar. Но я собираюсь использовать библиотеку pcap. Спасибо за предложения. - person Tomasz Kasperczyk; 24.08.2015