gethostbyname() 도메인 이름으로 hostent 정보를 구함

Network/Network 2011. 12. 1. 19:43

설명

주어진 호스트 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]));
    
/* // 바이너리(32bit 주소형태) long net_addr; memcpy(&net_addr, host_entry->h_addr, host_entry->h_length); */
return 0; }
]$ gcc gethostbyname.c 
]$ ./a.out 
211.239.155.97
]$

'Network > Network' 카테고리의 다른 글

IP Subnet  (0) 2011.12.02
멀티캐스트 원리  (0) 2011.12.02
inet_addr, inet_aton  (1) 2011.12.01
언제 shutdown()를 써야 하는가?  (0) 2011.11.23
소켓 함수 모음  (0) 2011.11.11
: