提升ASIO错误"未找到主机"在iOS上

时间:2016-10-11 18:27:14

标签: c++ ios boost boost-asio

我有一个应用程序,每秒一次通过本地网络发送多播消息。此代码在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(),我在"找不到主机(权威)"作为错误。

我不确定我是否真的理解为什么会发生此错误,当然也不知道如何修复错误。任何人都可以为我阐明它吗?

1 个答案:

答案 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