我试过了example,但它不起作用。显然它没有设置IPPROTO_IP/IP_MULTICAST_IF选项。我只能找到boost :: asio :: ip :: multicast :: outbound_interface IPPROTO_IP/IP_MULTICAST_IF,我试过但失败了。有没有什么办法可以让boost :: asio :: ip :: multicast工作,而不需要调用c-level setsockopt?boost :: asio :: ip :: multicast :: join_group不起作用
boost::asio::ip::udp::endpoint listen_endpoint(
listen_address, multicast_port);
socket_.open(listen_endpoint.protocol());
socket_.set_option(boost::asio::ip::udp::socket::reuse_address(true));
socket_.bind(listen_endpoint);
// Join the multicast group.
socket_.set_option(
boost::asio::ip::multicast::join_group(multicast_address));
使用'multicast :: join_group(multicast_address,listen_endpoint.address()。to_v4())'。 – 2011-12-30 14:04:41
感谢您的提醒。刚刚尝试过,我们必须将“0.0.0.0”设置为listen_endpoint。所以工作版本是 boost :: asio :: ip :: udp :: endpoint listen_endpoint(udp :: v4(),multicast_port); ... socket_.set_option(multicast :: join_group(address :: from_string(group _)。to_v4(), address :: from_string(interface).to_v4())); – poordeveloper 2011-12-30 16:21:04
@Stefan发表您的评论作为答案 – 2011-12-30 18:28:28