ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
7 июля
1528706 Топик полностью
AlexBi (Сегодня, 11:55, просмотров: 49) ответил Гyдвин на Такое происходит если комп на винде имеет 2 и более сетевые карты. Винде невозможно указать нужную для broadcast посылок. Встречалось пару раз на практике. Оперативно лечилось на местах выдергиванием патчкордов на время конфигурирования нужного. После высталения в девайсах IP адресов из диапазона нужной подсетки далее пользовали x.x.x.255 и уходило в соответствующий сетевой интерфейс.
Что бы указать нужную сетевую карту надо после sock=socket(..) сделать этому сокету bind(sock,localAddress) где localAddress взять не ноль, а адрес этого компьютера в нужной сети (в нужной сетевой карте). Тогда запрос на адрес 255.255.255.255 пойдет в эту сеть. Иначе, как я понял, возьмется первая попавшаяся сеть, свяжется с этим сокетом и все запросы будут идти только туда. Но если вы знаете IP адрес в нужной сети, тогда проще сразу слать широковещательно именно в эту сеть, 

изменив адрес на a.b.c.255. Это если маска подсети 255.255.255.0. Для другой маски надо ее учесть, типа (adress|(~mask)). При этом автоматически произойдет bind с нужной сетью.