Ускорьте прием ASIO широковещательных сообщений на нескольких сетевых картах - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть приложение, использующее Boost ASIO, которое должно прослушивать широковещательные сообщения через порт 7077 на всех сетевых картах, доступных на устройстве, но мне кажется, что где-то отсутствует важная деталь.

У меня есть список IP-адреса доступных сетевых карт, и я создаю новый сокет для каждого NI C, с которого я хочу получать данные, затем привязываю к сокету:

ip::udp::endpoint local_end_point(ip::address::from_string(ip_address[i]), 7077);
socket[i]->bind(local_end_point);

Однако, хотя я могу затем отправлять данные на всех сетевых картах и ​​получения данных, отправленных на IP-адрес, сокет не получает широковещательные данные.

В качестве альтернативы, если я связываюсь с адресом any ():

ip::udp::endpoint local_end_point(boost::asio::ip::address_v4::any(), 7077);
socket[i]->bind(local_end_point);

, тогда я может принимать широковещательные сообщения, но только на один NI C (обычно тот, у которого соединение inte rnet).

Есть идеи, что я делаю неправильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...