2010-11-30 6 views
0

현재 IPv6을 사용할 수있는 간단한 서버 응용 프로그램을 개발 중입니다. IPv6은 Windows (MSVC2010 사용)에서 제대로 작동하지만 Linux에서는 작동하지 않습니다.Boost asio : resolver :: query에서 IPv6 주소를 사용하면 Linux에서는 작동하지 않지만 Win32에서는 작동합니다.

다음 코드를 상상해 : 리눅스에 인쇄

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; 

오류 메시지가 "(권위) 호스트를 찾을 수 없습니다", 그것은 윈도우에서 작동하는 동안.

힌트를 환영합니다.

+0

리눅스 시스템에서'/ etc/hosts'는 어떻게 생겼습니까? –

답변

0

Linux 및 Windows는 이름 서비스에서 반환 한 주소의 검색 순서와 다른 동작을합니다. 다른 플래그를 사용하여 쿼리하는 주소 유형을보다 세밀하게 제어하십시오. 예를 들어,이 조회의 경우 numeric_host 플래그를 사용할 수 있습니다.