如何在asio中找到多播发送方地址?

时间:2012-01-21 17:51:40

标签: c++ sockets boost-asio multicast

我想知道,如何使用asio库确定将组播数据包发送到组播组的机器的IP地址。现在我的来源就像:

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 个答案:

答案 0 :(得分:3)

由于任何计算机都可以向多播组广播,您需要做的是使用upd :: socket对象上的receive_fromasync_receive_from方法开始侦听消息。 / p>

这些方法将使用远程对等方详细信息填充端点对象,然后您可以将其解析为地址。