2015-04-14 1 views
0

Я установил UDP-сервер и присоединился к группе многоадресной передачи как на локальном интерфейсе, так и на физическом ethernet, чтобы иметь возможность принимать многоадресные рассылки с 127.0.0.1 и 192.168.78. * (Пример) ,Проблемы со многоадресной сотовой связью в Windows 7

В соответствии с документами целевой интерфейс для сообщения групповой передачи определяется через адрес источника, и у меня есть клиент, отправляющий сообщения, но иногда выбирается интерфейс localhost, а иногда и интерфейс ethernet. То есть в первом случае адрес источника - 127.0.0.1.

Вопрос: Как заставить сокет datagram всегда отправлять многоадресные сообщения на физический интерфейс? (Т.е. имеющий адрес источника 192.168.78.xx)

ответ

1

Согласно документации, интерфейс назначения для многоадресной передачи сообщения определяется через адрес источника

Нет, определяется маршрут на адрес многоадресной передачи, заданный путем поиска таблиц маршрутизации IP, если вы не используете параметр IP_MULTICAST_IF, который устанавливает интерфейс по умолчанию для исходящих многоадресных рассылок.

У меня есть клиент, отправляющий сообщения, но иногда выбирается интерфейс localhost, а иногда и интерфейс ethernet. То есть в первом случае адрес источника - 127.0.0.1.

Вопрос: Как заставить сокет datagram всегда отправлять многоадресные сообщения на физический интерфейс? (то есть с адресом источника 192.168.78.xx)

С опцией, упомянутой выше.

Источник: Stevens и дрUnix Сетевое программирование, третье издание, §21.6..

+0

Спасибо! Я думаю, что IP_MULTICAST_IF - это именно то, что мне нужно. – Robert

+0

Интересно, что Win7 кажется (за наблюдение) случайным выбором интерфейса. – Robert

+0

Трудно понять, почему, но все возможно от этого поставщика. Стивенс конкретно говорит о BSD Unix. – EJP