2010-11-30 40 views
0

Je suis en train de développer une application serveur simple qui devrait aussi être compatible IPv6. IPv6 fonctionne correctement sous Windows (MSVC2010), mais pas sous Linux.Boost asio: Utiliser les adresses IPv6 dans resolver :: query fonctionne sur Win32, mais pas sur Linux

Imaginez le code suivant:

boost::system::error_code ec; 
std::string address="::1", service="http"; 
tcp::resolver resolver(io_service); 
tcp::resolver::query query(address, service); 
tcp::resolver::iterator resiter = resolver.resolve(query, ec); 

if (ec) 
    std::cout << "Cannot resolve address: " << address << "(" << ec.message() << ")" << std::endl; 

Le message d'erreur imprimé sur Linux est "Hôte introuvable (autorité)", alors qu'il fonctionne sur Windows.

Tous les conseils sont les bienvenus.

+0

à quoi ressemble '/ etc/hosts' sur votre système Linux. –

Répondre

0

Linux et Windows ont un comportement différent en ce qui concerne l'ordre de recherche des adresses renvoyées par les services de noms. Essayez d'utiliser différents indicateurs pour obtenir un contrôle plus précis sur le type d'adresse que vous recherchez. Par exemple, pour cette requête, vous pouvez utiliser l'indicateur numeric_host.