getaddrinfo 예제

예! getaddrinfo에 전달 되는 addrinfo 구조를 사용 하 여 원하는 연결의 종류를 정의 합니다. getaddrinfo() 및 getnameinfo()는 서로의 역 함수입니다. 이 필드는 반환된 주소에 대해 원하는 주소 패밀리를 지정합니다. 이 필드에 대한 유효한 값에는 AF_INET 및 AF_INET6가 포함됩니다. AF_UNSPEC 값은 getaddrinfo()가 노드 및 서비스와 함께 사용할 수 있는 모든 주소 패밀리(예: IPv4 또는 IPv6)에 대한 소켓 주소를 반환해야 함을 나타냅니다. getaddrinfo 함수에 사용할 수 있는 또 다른 이름은 GetAddrInfoA입니다. Ws2tcpip.h 헤더 파일의 매크로는 GetAddrInfoA를 getaddrinfo로 정의합니다. getaddrinfo_a(3), gethostbyname(3), gethostbyname(3), inet(3), gai.conf(5), hostname(7), ip(7) getaddrinfo()에서 사용하는 addrinfo 구조에는 다음 필드가 포함됩니다. getaddrinfo() 및 getnameinfo(getnameinfo)함수는 도메인 이름 시스템(DNS) 호스트 이름과 IP 주소를 사람이 읽을 수 있는 텍스트 표현과 구조화 된 바이너리 간에 변환하기 위한 POSIX 표준 응용 프로그램 프로그래밍 인터페이스(API)의 일부입니다. 운영 체제의 네트워킹 API에 대한 형식입니다.

getaddrinfo() 호스트 이름 또는 IP 주소를 나타내는 사람이 읽을 수 있는 텍스트 문자열을 동적으로 할당된 구조체 addrinfo 구조체의 연결된 목록으로 변환합니다. 이러한 함수에 대한 함수 프로토타입은 다음과 같이 지정됩니다. GetAddrInfoW 기능은 서비스 팩 2(SP2)를 사용하여 Windows XP의 Ws2_32.dll에 추가되었습니다. GetAddrInfoW 함수는 SP2가 있는 Windows XP보다 이전 버전의 Windows에서 사용할 수 없습니다. getaddrinfo 및 getnameinfo는 서로의 역 기능입니다. 네트워크 프로토콜에 구애받지 않으며 IPv4 및 IPv6를 모두 지원합니다. 프로토콜 독립 응용 프로그램을 빌드하고 레거시 IPv4 코드를 IPv6 인터넷으로 전환할 때 이름 확인을 위한 권장 인터페이스입니다. Windows 7 및 Windows Server 2008 R2 이전 모델에서는 getaddrinfo 함수가 현재 pNodeName 매개 변수에 전달된 이름에 적용된 지원 IDN 구문 분석 기능을 제공하지 않습니다. Winsock은 푸니코드/IDN 변환을 수행하지 않습니다.

GetAddrInfo 함수의 넓은 문자 버전은 Punycode를 사용하여 RFC 3490에 따라 IDN을 변환하지 않습니다. DNS를 쿼리할 때 GetAddrInfo 함수의 넓은 문자 버전은 엔터프라이즈 환경에서 Microsoft DNS 서버에서 사용하는 형식인 UTF-8 형식으로 유니코드 이름을 인코딩합니다. pHints 매개 변수가 NULL 포인터인 경우 getaddrinfo 함수는 pHints의 addrinfo 구조가 ai_family 멤버를 AF_UNSPEC으로 설정하고 다른 모든 멤버가 0으로 설정된 것처럼 처리합니다. IPv6 프로토콜은 Windows 2000용 IPv6 기술 미리 보기가 설치된 경우 Windows 2000에서 지원됩니다. 그렇지 않으면 Windows XP보다 일찍 Windows 버전에 대한 getaddrinfo 지원은 IPv4 이름 확인을 처리하는 것으로 제한됩니다. 지금, 당신은 거기에 모든 물건을 얻을 후, 당신은 마침내 getaddrinfo ()에 전화를 걸 수 있습니다! getaddrinfo 함수는 ANSI 호스트 이름에서 주소로 프로토콜 독립적인 변환을 제공합니다. 아니요. getaddrinfo를 사용 하 여 오류 처리는 약간 다른: 이전 함수 gethostbyname 는 더 이상 사용 되지 않습니다. 호스트 이름을 IP 주소로 변환하는 이전 방식입니다. 포트 주소는 여전히 htons 함수를 사용하여 수동으로 설정해야 합니다. 예를 들어, 최신 getaddrinfo를 사용하여 IPv4 및 IPv6를 지원하는 코드를 www.illinois.edu 작성하는 것이 훨씬 쉽습니다. 실제로 그것은 addrinfo 구조체의 링크 된 목록을 반환 합니다.: 플랫폼 소프트웨어 개발 키트 (SDK)에 Ws2tcpip.h 헤더 파일에 정의 된 getaddrinfo 함수에 대 한 매개 변수 이름 및 매개 변수 유형 Windows 서버 2003, 그리고 Windows XP 는 달랐다 .