gethostbyname()

programming/C_C++ 2012. 1. 17. 11:26
반응형

#include <netdb.h>

struct hostent *gethostbyname(const char *name);

The gethostbyname() function searches for information for a host 
with the hostname specified by the character-string parameter name.

hostent 구조체는 <netdb.h>에 다음과 같이 정의되어 있다. 

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 compatiblity */
};


반환값
 
gethostbyname() 그리고 gethostbyaddr() 함수는 hostent 구조체를 반환하거나 만일 에러가 발생한다면 NULL 포인터를 반환한다. 에러시, h_errno 변수는 에러 넘버를 가진다. 



#include <netdb.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>

int main(int argc, char **argv)
{
    struct hostent *myent;
    struct in_addr *myen;
    long int *add;

    myent = gethostbyname(argv[1]);
    if (myent == NULL)
    {
        perror("ERROR : ");
        exit(0);
    }

    printf("%s\n", myent->h_name);

    while(*myent->h_addr_list != NULL)
    {
        add = (long int *)*myent->h_addr_list;

        myen->s_addr = *add;

        printf("%s\n", inet_ntoa(*myen));

        myent->h_addr_list++;

    }

}

반응형
Posted by 공간사랑
,