В C Я связываю сокет datagram (AF_INET, SOCK_DGRAM) с INADDR_ANY. Затем я периодически использую этот сокет для отправки и получения датаграмм и отслеживания потока пакетов с помощью pcap. Проблема в том, что я не могу определить, является ли пакет входящим или исходящим с помощью pcap.C pcap обнаружение входящих дейтаграмм
Мониторинг передачи/приема и мониторинга pcap работает в отдельных потоках, и по соображениям синхронизации они не могут общаться. Я только хочу отслеживать входящие пакеты, а не те, которые отправляются, и есть ли у кого-нибудь представление о том, как я могу это сделать?
Я уже думал о тестировании IP-адреса назначения, но я не могу найти способ получить свой локальный ip. машина, на которой работает, не имеет статического ip, а тем более назначенного имени домена, и кажется, что getsockname не работает на сокетах, привязанных к INADDR_ANY. Также попытался использовать ioctl (sockfd, SIOCGIFCONF, &), который тоже не работал - устанавливает buffer.ifc_len = 0.
Кроме того, функция pcap_setdirection возвращает успех, но не имеет никакого эффекта. – Benubird