Мне нужно отправить многоадресный udp с многосетевого компьютера. Обнаружено, что в случае, если сокет не привязан к какому-либо конкретному интерфейсу, будет использоваться интерфейс по умолчанию (что бы это ни значило). Мой вопрос: можно ли указать что-то вроде inaddr_any для отправки многоадресного udp со всех доступных интерфейсов или это возможно сделать только путем перечисления всех интерфейсов и ручной отправки с каждого? Есть ли стандарт для этого? Спасибо
1 ответ
Вы можете указать, с какого сетевого интерфейса будут отправляться многоадресные пакеты IPv4, установив параметр сокета IP_MULTICAST_IF
. Значение, переданное setsockopt
, должно быть адресом struct in_addr
, содержащим IP-адрес рассматриваемого интерфейса.
Если вы хотите отправить многоадресный пакет на несколько интерфейсов, вам нужно будет вызывать sendto
несколько раз, устанавливая параметр IP_MULTICAST_IF
перед каждым.
Похожие вопросы
Новые вопросы
c
C - это язык программирования общего назначения, используемый для системного программирования (ОС и встраиваемых), библиотек, игр и кроссплатформенности. Этот тег следует использовать с общими вопросами, касающимися языка C, как это определено в стандарте ISO 9899 (последняя версия 9899: 2018, если не указано иное, а также для запросов, специфичных для версии, с c89, c99, c11 и т. Д.). C отличается от C ++ и не должен сочетаться с тэгом C ++ без разумной причины.