【发布时间】:2014-06-01 04:11:15
【问题描述】:
我尝试在 OSX 上打开 IPv6 多播侦听端口,但在尝试运行“join_group”选项时收到错误代码 49。以下是导致问题的代码示例:
ip6_listen=boost::make_shared<boost::asio::ip::udp::socket>(io_service);
ip6_listen->open(boost::asio::ip::udp::v6());
ip6_listen->set_option(boost::asio::ip::udp::socket::reuse_address(true));
ip6_listen->bind(boost::asio::ip::udp::endpoint(boost::asio::ip::address_v6::any(),ANNOUNCE_PORT));
ip6_listen->set_option(boost::asio::ip::multicast::join_group(boost::asio::ip::address_v6::from_string("FF01::AC22"))); //Throws error "49"
目前尚不清楚为什么会引发错误,因为它在 Windows 和 Linux 上都能正常工作。为什么这个错误只发生在 OSX 上?
【问题讨论】:
-
错误 49 是“无法分配请求的地址”;您是否在 OSX 系统上尝试过其他地址(或其他简单的网络连接代码)以确保它不是其他可能的问题,或者您没有绑定到该套接字地址/端口的其他东西?
-
绑定工作正常。最后一行“join_group”不起作用。是的,我尝试过其他多播地址。
标签: c++ macos sockets boost boost-asio