linux man page : gethostbyname - µµ¸ÞÀÎ À̸§¿¡ ´ëÇÑ ÀÎÅÍ³Ý ÁÖ¼Ò ¸ñ·ÏÀ» ¾ò¾î¿Â´Ù.
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

<a href="/modules/moniwiki/wiki.php/manSearch?google=none&name=gethostbyname">gethostbyname</a>(3)

1장. gethostbyname(3)

³×Æ®¿÷ È£½ºÆ® ¸ñ·ÏÀ» °¡Á®¿Â´Ù.


1.1. »ç¿ë¹ý

#include <netdb.h>
extern int h_errno;

struct hostent *gethostbyname(const char *name);

#include <sys/socket.h>      /* for AF_INET */
struct hostent *gethostbyaddr(const char *addr,
  int len, int type);

void sethostent(int stayopen);

void endhostent(void);

void herror(const char *s);

const char * hstrerror(int err);
		


1.2. ¼³¸í

gethostbyname()ÇÔ¼ö´Â ÁÖ¾îÁø È£½ºÆ® name¿¡ »óÀÀÇÏ´Â hostentŸÀÔÀÇ ±¸Á¶Ã¼¸¦ ¹ÝȯÇÑ´Ù. nameÀº È£½ºÆ®À̸§À̰ųª Ç¥ÁØ Á¡ Ç¥±â¹ýÀÇ IPv4ÁÖ¼Ò, ȤÀº IPv6ÁÖ¼ÒÀÌ´Ù. IPv6¿¡ ´ëÇÑ ³»¿ëÀº IPv6 ȯ°æ¼³Á¤À» Âü°íÇϱ⠹ٶõ´Ù.

¸¸ÀÏ nameÀÌ IPv4³ª IPv6ÁÖ¼Ò¶ó¸é ¾î¶°ÇÑ Ã£±âµµ ÇàÇØÁöÁö ¾Ê°í ´ÜÁö nameÀ» h_nameÇʵ忡 º¹»çÇϰí ÇØ´ç in_addr ±¸Á¶Ã¼¸¦ ¹ÝȯÇÏ´Â hostent ±¸Á¶Ã¼ÀÇ h_addr_list[0]¿¡ º¹»çÇÑ´Ù. ¸¸ÀÏ nameÀÌ Á¡À¸·Î ³¡³ªÁö ¾Ê°í ȯ°æº¯¼ö HOSTALIASES°¡ ¼³Á¤µÇ¾î ÀÖ´Ù¸é HOSTALIASES°¡ °¡¸®Å°´Â º°Äª ÆÄÀÏÀÌ nameÀ» À§ÇØ ¿ì¼± Ž»öµÈ´Ù. ÇöÀç µµ¸ÞÀΰú »óÀ§ µµ¸ÞÀÎÀº nameÀÌ Á¡À¸·Î ³¡³ªÁö ¾Ê´Â´Ù¸é Ž»öµÈ´Ù.

gethostbyaddr()ÇÔ¼ö´Â ±æÀÌ len, ÁÖ¼ÒŸÀÔÀÌ typedls È£½ºÆ® ÁÖ¼Ò addr¿¡ ÇØ´çÇÏ´Â hostent±¸Á¶Ã¼¸¦ ¸®ÅÏÇÑ´Ù. À¯ÀÏÇÏ°Ô À¯È¿ÇÑ ÁÖ¼Ò Å¸ÀÔÀº ÇöÀç AF_INETÀÌ´Ù.

¸¸ÀÏ stayopenÀÌ Âü(1)À̶ó¸é, sethostent()ÇÔ¼ö´Â ¿¬°áµÈ TCP¼ÒÄÏÀÌ ³×ÀÓ ¼­¹ö ÁúÀǸ¦ À§ÇØ »ç¿ëµÇ¾î¾ß ÇÑ´Ù´Â °ÍÀ» °¡¸®Å²´Ù. ±×·¸Áö ¾ÊÀ¸¸é ³×ÀÓ ¼­¹öÁúÀÇ¿¡ UDP¸¦ ÀÌ¿ëÇÒ °ÍÀÌ´Ù.

endhostent()ÇÔ¼ö´Â ³×ÀÓ ¼­¹ö ÁúÀǸ¦ À§ÇÑ TCP¿¬°áÀ» ³¡³½´Ù.

herror()ÇÔ¼ö´Â stderr¿¡ ÇöÀç °ªÀÇ h_errno¿¡ »óÀÀÇÏ´Â ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù. ±¸½ÄÀ¸·Î »ç¿ëÇÏÁö ¾Ê´Â´Ù.

hsterror()ÇÔ¼ö´Â ¿¡·¯ ³Ñ¹ö¸¦ °¡Áö¸ç »óÀÀÇÏ´Â ¸Þ½ÃÁö¸¦ ¹ÝȯÇÑ´Ù. ±¸½ÄÀ¸·Î »ç¿ëÇÏÁö ¾Ê´Â´Ù.

µµ¸ÞÀÎ À̸§ ÁúÀÇ´Â gethostbyname()¿¡ ÀÇÇØ ¼öÇàµÇ¸ç gethostbyaddr()Àº /etc/host.conf¿¡ ÀÖ´Â order¶óÀÎÀÇ ³»¿ë¿¡ ÀÇÁ¸ÇÏ¿© /etc/hosts¿¡¼­ ¶óÀÎÀ» »Ì¾Æ³» ³×ÀÓ¼­¹öÀÇ ÀϺγª ¸ðµÎÀÇ Á¶ÇÕ°ú NISȤÀº YP¸¦ »ç¿ëÇÑ´Ù.

hostent ±¸Á¶Ã¼´Â <netdb.h>¿¡ ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾî ÀÖ´Ù.

struct hostent {
        char    *h_name;        /* È£½ºÆ®ÀÇ °ø½Ä À̸§ */
        char    **h_aliases;    /* º°Äª ¸®½ºÆ® */
        int     h_addrtype;     /* È£½ºÆ® ÁÖ¼Ò Å¸ÀÔ */
        int     h_length;       /* ÁÖ¼ÒÀÇ ±æÀÌ */
        char    **h_addr_list;  /* ÁÖ¼Ò ¸®½ºÆ® */
}
#define h_addr  h_addr_list[0]  /* ±¸ ¹öÀü°úÀÇ È£È¯À» À§ÇØ */
		


1.3. ¹Ýȯ°ª

gethostbyname() ±×¸®°í gethostbyaddr() ÇÔ¼ö´Â hostent ±¸Á¶Ã¼¸¦ ¹ÝȯÇϰųª ¸¸ÀÏ ¿¡·¯°¡ ¹ß»ýÇÑ´Ù¸é NULL Æ÷ÀÎÅ͸¦ ¹ÝȯÇÑ´Ù. ¿¡·¯½Ã, h_errno º¯¼ö´Â ¿¡·¯ ³Ñ¹ö¸¦ °¡Áø´Ù.


1.4. ¿¡·¯

º¯¼ö h_errno´Â ´ÙÀ½ °ªµéÀ» °¡Áø´Ù.

HOST_NOT_FOUND

ÁöÁ¤µÈ È£½ºÆ®°¡ ¾Ë·ÁÁöÁö ¾Ê¾Ò´Ù.

NO_ADDRESS, NO_DATA

¿ä±¸ÇÑ À̸§ÀÌ À¯È¿ÇÏÁö¸¸ IPÁÖ¼Ò¸¦ °¡ÁöÁö ¾Ê´Â´Ù.

NO_RECOVERY

º¹±¸ ºÒ°¡´ÉÇÑ ³×ÀÓ ¼­¹ö¿¡·¯°¡ ¹ß»ýÇß´Ù.

TRY_AGIN

ÀϽÃÀûÀ¸·Î ¹ß»ýÇÑ ¿¡·¯·Î ³×ÀÓ¼­¹ö ÀÎÁõ½Ã ¹ß»ýÇß´Ù. ´Ù½Ã ½ÃµµÇÏ¸é µÈ´Ù.


1.5. ¿¹Á¦

#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++;
    }
}
		
´ÙÀ½Àº Å×½ºÆ® °á°ú´Ù.
[root@localhost test]# ./gethostbyname www.yahoo.com
www.yahoo.akadns.net                                                           
66.218.71.83                                                                   
66.218.71.84                                                                   
66.218.71.86                                                                   
66.218.71.87                                          
66.218.71.89                                                                   
...
		


1.6. Âü°í¹®Çå

  1. ÀÎÅÍ³Ý ÁÖ¼Ò º¯È¯

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.