Tôi đã thử các example, nhưng nó không hoạt động. Dường như nó không đặt tùy chọn IPPROTO_IP/IP_MULTICAST_IF. Tôi chỉ có thể tìm thấy tăng :: asio :: ip :: multicast :: outbound_interface cho IPPROTO_IP/IP_MULTICAST_IF, tôi đã thử nhưng không thành công. Có cách nào để làm cho tăng :: asio :: ip :: multicast làm việc mà không gọi c-level setsockopt?boost :: asio :: ip :: multicast :: join_group không hoạt động
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));
sử dụng 'multicast :: join_group (multicast_address, listen_endpoint.address(). To_v4())'. –
Cảm ơn lời nhắc của bạn. Chỉ cần thử, và chúng ta phải đặt "0.0.0.0" thành listen_endpoint. Vì vậy, phiên bản làm việc là boost :: asio :: ip :: udp :: endpoint listen_endpoint (udp :: v4(), multicast_port); ... socket_.set_option (multicast :: join_group (địa chỉ :: from_string (nhóm _). To_v4(), address :: from_string (interface) .to_v4())); – poordeveloper
@Stefan đăng nhận xét của bạn dưới dạng câu trả lời –