2016-10-11 50 views
0

我有一個應用程序,它每隔一秒就在本地網絡上發送一個多播消息。此代碼在Windows和MacOS上都能正常工作,並且在iOS上工作正常,除非網絡未連接到Internet。在iOS上升級ASIO錯誤「找不到主機」

 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

host_name返回什麼?可能它會返回一個不能解析的名稱。

如果你只是想本地主機,請使用boost::asio::ip::addressv4()或甚至boost::asio::ip::address::from_string("127.0.0.1")

另外一個條目添加到您的/etc/hosts文件:

127.0.0.1 thehostnametoresolvetolocalhost