LINUX.ORG.RU

Как узнать из открытого сокета номер и имя сетевого интерфейса?

 ,


0

2

Как узнать из открытого сокета номер и имя сетевого интерфейса? Сокет - UDP multicast

Программа принимает из сети multicast пакеты. Нужно еще мониторить физический разрыв ethernet линка. Для этого нужно знать номер интерфейса

Теоретически имя вообще может не быть, если оно биндилось на INADDR_ANY

man getsockname + ...

vel ★★★★★ ()

ioctl, SIOCGIFCONF, struct ifconf

anonymous ()
Ответ на: комментарий от anonymous

Через это я получу только список интерфейсов. Как привязать это к конкретному multicast 225.0.0.25?

dmitry-vm ()
Ответ на: комментарий от dmitry-vm

эмм .. а bind ты на что делал? Какой адрес?

anonymous ()

У меня для тебя плохие новости, приложение (обычное) ничего не знает о инрерфейсах. Тебе это надо делать на более низом уровне.

itn ★★ ()
Ответ на: комментарий от dmitry-vm

ну и ты понимаешь, что сокет у тебя принимает пакет с любого интерфейса? Какой из них ты хочешь получить?

Хочешь по пакету пришедшему оприделить? тогда смотри откуда он пришел и сравнивай с адресами и масками конкретного интерфейчас, список которых ты можешь получить ...

anonymous ()
Ответ на: комментарий от dmitry-vm

А индекс?

udp-сокет может не быть привязан к интерфейсу.

Мультикаст - отдельна вещь. Смотри «ip maddr», если там есть нужная тебе информация, то смотри как ее пролучить (/proc/net/igmp, netlink, getsockopt())

vel ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.