설명

주어진 호스트 name 에 상응하는 hostent 타입의 구조체를 반환한다. hostent 구조는 아래와 같습니다.

struct hostent
{
  char *h_name;                 /* Official name of host.  */
  char **h_aliases;             /* Alias list.  */
  int h_addrtype;               /* Host address type.  */
  int h_length;                 /* Length of address.  */
  char **h_addr_list;           /* List of addresses from name server.  */
#define h_addr  h_addr_list[0]  /* Address, for backward compatibility.  */
};

 

헤더 netdb.h
형태 struct hostent *gethostbyname(const char *name);
인수
const char *name 호스트 이름이거나 표준 점 표기법의 IPv4 주소, 콜론(그리고 점 표기법도 가능)표기법의 IPv6
반환
  hostent 구조체
NULL 에러, h_errno 변수에 에러 넘버 대입

예제

forum.falinux.com의 IP주소를 구합니다.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>

int   main( void)
{
    struct hostent *host_entry;
    int             ndx;

    host_entry = gethostbyname( "forum.falinux.com");

    if ( !host_entry)
    {
        printf( "gethostbyname() 실행 실패/n");
        exit( 1);
    }
    for ( ndx = 0; NULL != host_entry->h_addr_list[ndx]; ndx++)
        printf( "%s\n", inet_ntoa( *(struct in_addr*)host_entry->h_addr_list[ndx]));

    return 0;
}
]$ gcc gethostbyname.c 
]$ ./a.out 
211.239.155.97
]$