0

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

ответ

2

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

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

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

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

Но эти (tcpdump или libpcap) являются обходными способами.

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

+0

У меня недостаточно опыта для работы с программным обеспечением с открытым исходным кодом, таким как Traccar. Но я собираюсь использовать библиотеку pcap. Спасибо за предложения. –