我試過了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