gethostbyaddr()의 C 언어 함수
gethostbyaddr()은 주어진 주소에 해당하는 호스트 이름과 주소 정보를 포함하는 호스트 구조 포인터를 반환합니다. 구조 선언은 다음과 같습니다:
structhostent {
char FAR * h_name;
char FAR * FAR * h_aliases; p>short h_addrtype ;
short h_length;
char FAR * FAR * h_addr_list;
} 회원 목적
h_name 일반 호스트 이름(PC).
h_aliases 선택적 호스트 이름의 null 종료 대기열입니다.
h_addrtype Windows 소켓의 경우 이 필드는 항상 PF_INET입니다.
h_legnth PF_INET 필드에 해당하는 각 주소의 길이(바이트 수)는 4여야 합니다.
h_addr_list는 널 포인터로 끝나는 호스트 주소 목록이어야 합니다. 반환된 주소는 네트워크 순서로 정렬됩니다.
다른 이전 소프트웨어와의 호환성을 보장하기 위해 h_addr_list[0]가 정의됩니다. 매크로 h_addr로.
반환된 포인터는 Windows 소켓 구현에 의해 할당된 구조를 가리킵니다. 애플리케이션은 이 구조를 수정하거나 그 일부를 해제하려고 시도해서는 안 됩니다. 또한 각 스레드에는 이 구조의 복사본이 하나만 있으므로 응용 프로그램은 다른 Windows Scokets API 호출을 수행하기 전에 필요한 정보를 복사해야 합니다. 오류가 발생하지 않으면 gethostbyaddr()은 위에서 설명한 대로 호스트 구조에 대한 포인터를 반환하고, 그렇지 않으면 null 포인터를 반환합니다. 응용 프로그램은 WSAGetLastError()를 통해 특정 오류 코드를 얻을 수 있습니다.
오류 코드:
WSANOTINTIALISED 이 API를 사용하기 전에 WSAStartup()을 성공적으로 호출해야 합니다.
WSAENTDOWN Windows 소켓 구현이 네트워크 하위 시스템에서 오류를 감지했습니다.
WSAHOST_NOT_FOUND 승인된 응답 호스트를 찾을 수 없습니다.
WSATRY_AGAIN 승인되지 않은 호스트가 발견되지 않았거나 SERVERFAIL입니다.
WSANO_RECOVERY 복구할 수 없는 오류, FORMERR, REFUSED, NOTIMP.
WSANO_DATA 유효한 이름이지만 요청 유형에 대한 데이터 레코드가 없습니다.
WSAEINPROGRESS Windows 소켓 차단 작업이 진행 중입니다.
WSAEINTR 차단 호출이 WSACancelBlockingCall()에 의해 취소되었습니다.
참조: WSAAsyncGetHostByAddr(), gethostbyname() HOSTENT *lpHostEnt;
in_addr ina;
ina.S_un.S_addr = inet_addr(127.0.0.1); //로컬 호스트 정보 가져오기
lpHostEnt = gethostbyaddr((char*)amp;ina.S_un.S_addr, 4, AF_INET) ;
MessageBox(lpHostEnt-gt;h_name); //호스트 이름 표시