2016-10-11 1 views
0

У меня есть приложение, которое отправляет многоадресное сообщение через локальную сеть раз в секунду. Этот код отлично работает как на Windows, так и на macOS, и он отлично работает на iOS, если сеть не подключена к Интернету.Boost Ошибка ASIO «Хост не найден» на 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

Что возвращает host_name? Вероятно, он возвращает имя, которое не будет разрешено.

Если вы просто хотите localhost, используйте boost::asio::ip::addressv4() или даже boost::asio::ip::address::from_string("127.0.0.1").

В качестве альтернативы добавить запись в файл /etc/hosts:

127.0.0.1 thehostnametoresolvetolocalhost 
Смежные вопросы