我想知道,如何使用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
下一步做什么?
答案 0 :(得分:3)
由于任何计算机都可以向多播组广播,您需要做的是使用upd :: socket对象上的receive_from或async_receive_from方法开始侦听消息。 / p>
这些方法将使用远程对等方详细信息填充端点对象,然后您可以将其解析为地址。