gethostbyaddr 예제

이러한 기능은 다음과 같은 경우에 실패합니다. gethostbyaddr() 및 gethostbyname() 함수는 h_errno를 아래 목록에 표시된 값으로 설정합니다. errno에 대한 모든 변경 내용은 지정되지 않습니다. gethostbyname *() 및 gethostbyaddr*() 함수는 더 이상 사용되지 않습니다. 응용 프로그램은 getaddrinfo(3)와 getnameinfo(3)를 대신 사용해야 합니다. gethostbyname, gethostbyaddr, sethostent, gethostent, endhostent, h_errno, herror, hstrerror, gethostbyar_r, gethostbyname2, gethostbyname2, gethostbyname_r, gethostbyname_r, gethostbyent_r – IP 주소 기능을 감안할 때 네트워크 호스트 항목을 가져옵니다. socket.gethostbyaddr() 반대로 포함 된 튜플을 반환 합니다., 구조체 in_addr 또는 구조체 in6_addr 있는 경우, gethostbyaddr()를 사용 하 여 호스트 이름을 다시 얻을 수 있습니다. gethostbyaddr()는 IPv6호환이지만 대신 최신 의shinier getnameinfo()를 사용해야 합니다. gethostbyaddr()가 성공적으로 반환되면 결과의 h_addrtype 필드는 함수에 전달된 형식 인수와 동일해야 하며 h_addr_list 필드에는 전달된 addr 인수의 복사본인 단일 주소가 나열됩니다. 함수. gethostbyaddr() 함수는 길이 len 및 주소 형식 의 지정된 호스트 주소 addr에 대 한 형식 hostent의 구조를 반환 합니다.

유효한 주소 유형은 AF_INET 및 AF_INET6입니다. 호스트 주소 인수는 주소 형식에 따라 형식의 구조체에 대한 포인터입니다(예: 구조체 in_addr * 주소 형식 AF_INET에 대한 inet_addr(3)에 대한 호출을 통해 얻은 것일 수 있음). Glibc2에는 재진입 버전 gethostent_r(), gethostbyaddr_r(), gethostbyname_r() 및 gethostbyname2_r()가 있습니다. 호출자는 성공에 채워질 호스트 구조 ret와 임시 작업 버퍼 buf 크기의 buf를 제공합니다. 호출 후 결과는 성공 결과를 가리킵니다. 오류가 발생하거나 항목이 발견되지 않은 경우 결과는 NULL이 됩니다. 함수는 성공 시 0을 반환하고 실패시 0이 아닌 오류 번호를 반환합니다. 이러한 함수의 비재입함수 버전에서 반환되는 오류 외에도 buf가 너무 작으면 함수가 ERANGE를 반환하고 더 큰 버퍼로 호출을 다시 시도해야 합니다.

전역 변수 h_errno는 수정되지 않지만 오류 번호를 저장할 변수의 주소는 h_errnop에 전달됩니다. gethostbyaddr()의 추가 인수는 형식이 AF_INET인 경우 in_addr 구조여야 합니다. 여기에는 네트워크 바이트 순서로 이진 형식(즉, null-종료되지 않음) 주소가 포함되어 있습니다. gethostbyaddr() 함수는 데이터베이스에 이러한 주소가 있는 경우에도 AF_INET 이외의 주소 패밀리의 주소를 반환하지 않습니다. 웹 호스트 정보를 구체적으로 해결하도록 설계된 세 가지 함수가 있으며 이러한 함수는 gethostbyaddr(), gethostbyname() 및 gethostbynamel() (즉, 소문자 L)입니다. 세 가지 모두 하나의 매개 변수를 취하고 처음 두 매개 변수는 서로 완벽하게 보완합니다 – gethostbyname()는 지정한 서버의 IP 주소를 반환하고 gethostbyaddr()는 지정한 IP 주소의 도메인 이름을 반환합니다. gethostbyaddr()는 구조체 in_addr 또는 구조체 in6_addr를 가져와 해당 호스트 이름(있는 경우)을 가져오므로 gethostbyname()의 반대입니다.