Я пытаюсь отправить несколько дейтаграмм UDP во встроенный модуль Linux, используя многоадресную рассылку. Версия ядра на устройстве:может отправлять, но не может принимать многоадресные пакеты
/ # uname -r
2.6.24.6
для тестирования Я использую коды найдены here (добавлено несколько заголовков и изменили адрес IP-чтобы соответствовать IP-адрес устройства)
Проблема в том, что другие устройства в одной и той же группе многоадресной передачи (ПК с Windows) могут принимать данные, пока устройство отсутствует. Я где-то читал, что значение rp_filter должно быть изменено. Я пробовал все варианты, но безрезультатно.
Я могу запустить устройство как сервер без каких-либо проблем. Но он просто не получает.
Обратите внимание, что netstat -g
не работает.
/ # netstat -g
netstat: invalid option -- g
BusyBox v1.11.2() multi-call binary
Usage: netstat [-laentuwxr]
Display networking information
Options:
-l Display listening server sockets
-a Display all sockets (default: connected)
-e Display other/more information
-n Don't resolve names
-t Tcp sockets
-u Udp sockets
-w Raw sockets
-x Unix sockets
-r Display routing table
Поэтому я не могу проверить членство в группах.
P.S: Я запускал ту же программу (код из приведенной выше ссылки) на компьютере Linux, и он работал нормально. Таким образом, код не является проблемой.
мне удалось проверить/ргос/нетто/IGMP и говорит eth0 является членом E2010101 -> 226.1.1.1, что является правильным. Однако я все равно не получаю никаких дейтаграмм. –
Вам не нужна поддержка netstat -g для членства в группе запросов. Если вы разделите netstat -gn на коробке, вы увидите, что netstat просто считывает эту информацию из/proc. Следовательно, чтение/proc/net/igmp (и/proc/net/igmp6 для ipv6) покажет вам текущее членство в группе. (Примечание для моей (x86) группы ящиков составляет 010000E0 для 224.0.0.1, то есть вам может потребоваться переключить некоторый порядок байтов). –
@ amo-ej1: yupp Я понял это. Проверьте мой предыдущий комментарий. Однако до сих пор не удается получить какие-либо датаграммы. –