我正在尝试使用 boost 库(1.61.0)实现 IPv6 多播。但是,我在 macOS(OSX 10.10、10.11、10.12)中收到以下错误,并且仅适用于本地链接(全局 IPv6 有效)。我在 Ubuntu(14.04、16.04、17.10)上没有收到此错误。netif.getIndex ()获取本地链接的接口索引。我在哪里做错了?
错误:
boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >: set_option: Can't assign requested address
这是我的 IPv6 多播代码段:
receiveSocket.bind(udp::Endpoint(localEndpoint.address(), multicastEndpoint.port()));
receiveSocket.set_option(ip::multicast::join_group(multicastEndpoint.address().to_v6()));
if (!localEndpoint.address().is_unspecified()) {
sendSocket.set_option(ip::multicast::outbound_interface(netif.getIndex()));
}
sendSocket.set_option(ip::multicast::join_group(multicastEndpoint.address().to_v6()));