LINUX.ORG.RU

История изменений

Исправление HighMan, (текущая версия) :

В данном случае сокет нужно явно биндить к интерфейсу.

Эврика!

У меня вчера уже появилась мысль насчет этого, но мысля была запоздалая и проклюнулась лишь в дороге.

Сегодня прибиндил:

setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &i, sizeof(int));
setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, device, strlen(device) + 1);

Заработало! Остался лишь один момент: после перезагрузки компа интерфейсы находятся в DOWN. Попытки послать броадкаст через такой интерфейс, естественно, приводят к неудаче. Сначала нужно апнуть интерфейс.

Осталось разобраться как его програмно апнуть)

Исходная версия HighMan, :

В данном случае сокет нужно явно биндить к интерфейсу.

Эврика!

У меня вчера уже появилась мысль насчет этого, но мысля была запоздалая и проклюнулась лишь в дороге.

Сегодня прибиндил:

setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &i, sizeof(int));
setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, device, strlen(device) + 1);

Заработало! Остался лишь один момент: после перезагрузки компа интерфейсы находятся в DOWN. Попытки послать броадкаст через такой интерфейс, естественно, приводят к неудаче. Сначала нужно апнуть интерфейс.