我有一个应用程序,每秒通过本地网络发送一次多播消息。此代码在 Windows 和 macOS 上运行良好,在 iOS 上运行良好,除非网络未连接到互联网。
boost::asio::ip::tcp::resolver resolver(m_IOservice);
boost::system::error_code ec;
boost::asio::ip::tcp::resolver::query query(boost::asio::ip::host_name(),"");
boost::asio::ip::tcp::resolver::iterator it = resolver.resolve(query, ec);
boost::asio::ip::address interface_ip_address;
while(it!=boost::asio::ip::tcp::resolver::iterator())
{
interface_ip_address = (it++)->endpoint().address();
if(interface_ip_address.is_v4())
{
// Message sending code here
}
}
问题发生在 resolver.resolve() 中,我得到一个异常,错误是“找不到主机(权威)”。
我不确定我是否真的理解为什么会发生此错误,当然也不知道如何修复它。任何人都可以为我阐明它吗?
最佳答案
host_name 返回什么?它可能会返回一个无法解析的名称。
如果您只需要本地主机,请使用 boost::asio::ip::addressv4()
甚至 boost::asio::ip::address::from_string("127.0 .0.1")
。
或者在您的 /etc/hosts
文件中添加一个条目:
127.0.0.1 thehostnametoresolvetolocalhost
关于c++ - 在 iOS 上 boost ASIO 错误 "Host not found",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39984172/