我有一个应用程序,每秒一次通过本地网络发送多播消息。此代码在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(),我在"找不到主机(权威)"作为错误。
我不确定我是否真的理解为什么会发生此错误,当然也不知道如何修复错误。任何人都可以为我阐明它吗?
答案 0 :(得分:0)
host_name返回什么?可能它会返回一个无法解决的名称。
如果您只想要localhost,请使用boost::asio::ip::addressv4()
甚至boost::asio::ip::address::from_string("127.0.0.1")
。
或者在/etc/hosts
文件中添加一个条目:
127.0.0.1 thehostnametoresolvetolocalhost