Как найти адрес многоадресного отправителя в asio? - PullRequest
3 голосов
/ 21 января 2012

Хотелось бы узнать, как определить IP-адрес компьютера, который отправляет многоадресные пакеты в группу многоадресной рассылки, используя библиотеку asio.Теперь мой источник выглядит так:

std::string listen_addr4 = lpd_config.config.lpd_listen_host4();
std::string multicast_addr4 = lpd_config.config.lpd_multicast_host4();
short multicast_port = lpd_config.config.lpd_multicast_port();

asio::ip::udp::endpoint lpd_listen_endpoint4(asio::ip::address::from_string(listen_addr4), multicast_port); //TODO ipv6 support

asio::ip::udp::socket lpd_listen_socket4(lpd_io_service, lpd_listen_endpoint4.protocol());  //TODO ipv6 support

lpd_listen_socket4.set_option(asio::ip::udp::socket::reuse_address(true));
lpd_listen_socket4.bind(lpd_listen_endpoint4);  //TODO ipv6 support

lpd_listen_socket4.set_option(asio::ip::multicast::join_group(asio::ip::address::from_string(multicast_addr4)));    //TODO ipv6 support

Что делать дальше?

1 Ответ

3 голосов
/ 21 января 2012

Поскольку любая машина может передавать в многоадресную группу, вам нужно начать прослушивание сообщений, используя методы receive_from или async_receive_from в upd ::объект сокета.

Эти методы заполняют объект конечной точки сведениями об удаленном узле, которые затем можно преобразовать в адрес.

...