c++ - 在 iOS 上 boost ASIO 错误 "Host not found"

标签 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() 中,我得到一个异常,错误是“找不到主机(权威)”。

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

最佳答案

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/

相关文章:

java - Java 和 C/C++ 应用程序可以共享信号量吗?

c++ - 使用数组作为函数输入参数

c++ - boost::filter_iterator 也为 end() 调用谓词?

c++ - 多处理器 boost::线程?在一个处理器上运行的所有线程

c++ - 在 64 位机器上注册 C++ DLL

python - 干净地实现运行时动态链接

ios - 在控制台中记录 NSURLSession 请求

ios - replacingOccurrences 错误

ios - React Native [[DEFAULT]] firebaseapp 未初始化react-native-firebase

c++ - Boost.coroutine 单向 : Legal to get reference to stack variable on suspension?