GETHOSTBYNAME

Section: ¸®´ª½º ÇÁ·Î±×·¡¸Ó ¸Å´º¾ó (3)
Updated: 2000³â 8¿ù 12ÀÏ
Index
Return to Main Contents
 

À̸§

gethostbyname, gethostbyaddr, sethostent, endhostent, herror, hstrerror - ³×Æ®¿÷ È£½ºÆ® ¿£Æ®¸®¸¦ °¡Á®¿Â´Ù.  

»ç¿ë¹ý

#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);
 

¼³¸í

gethostbyname() ÇÔ¼ö´Â ÁÖ¾îÁø È£½ºÆ® name ¿¡ »óÀÀÇÏ´Â hostent ŸÀÔÀÇ ±¸Á¶Ã¼¸¦ ¹ÝȯÇÑ´Ù. ¿©±â¼­ nameÀº È£½ºÆ® À̸§À̰ųª Ç¥ÁØ Á¡ Ç¥±â¹ýÀÇ IPv4 ÁÖ¼ÒÀ̰ųª, ÄÝ·Ð(±×¸®°í Á¡ Ç¥±â¹ýµµ °¡´É)Ç¥±â¹ýÀÇ IPv6ÀÌ´Ù. (IPv6¿¡ ´ëÇÑ ±â¼úÀ» À§ÇØ RFC1884¸¦ ÂüÁ¶Çضó.) ¸¸ÀÏ name ÀÌ IPv4³ª IPv6 ÁÖ¼Ò¶ó¸é, ¾î¶² ·è¾÷µµ ÇàÇØÁöÁö ¾Ê°í gethostbyname()´Â ´Ü¼øÈ÷ name À» h_name Çʵ忡 º¹»çÇÏ°í ÇØ´ç struct in_addr ¸¦ ¹ÝȯÇÏ´Â hostent ±¸Á¶Ã¼ÀÇ h_addr_list[0] Çʵ忡 º¹»çÇÑ´Ù. ¸¸ÀÏ name°¡ Á¡À¸·Î ³¡³ªÁö ¾Ê°í ȯ°æ º¯¼ö HOSTALIASES°¡ ¼³Á¤µÇ¾î ÀÖ´Ù¸é, HOSTALIASES°¡ °¡¸®Å°´Â ¾ó¶óÀÌ½Ì ÆÄÀÏÀÌ nameÀ» À§ÇØ ¿ì¼± Ž»öµÈ´Ù. (ÆÄÀÏ Çü½ÄÀ» À§ÇØ hostname(7)À» ÂüÁ¶Çضó.) ÇöÀç µµ¸ÞÀΰú »óÀ§ µµ¸ÞÀÎÀº nameÀÌ Á¡À¸·Î ³¡³ªÁö ¾Ê´Â´Ù¸é Ž»öµÈ´Ù.

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

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

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

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

(±¸½Ä) hstrerror() ÇÔ¼ö´Â ¿¡·¯(ÀüÇüÀûÀ¸·Î h_errno) ³Ñ¹ö¸¦ °¡Áö¸ç »óÀÀÇÏ´Â ¸Þ¼¼Áö¸¦ ¹ÝȯÇÑ´Ù.

µµ¸ÞÀÎ ³×ÀÓ ÁúÀÇ´Â gethostbyname() ¿¡ ÀÇÇØ ¼öÇàµÇ¸ç gethostbyaddr()´Â /etc/host.conf¿¡ ÀÖ´Â order¶óÀÎÀÇ ³»¿ë¿¡ ÀÇÁ¸ÇÏ¿© /etc/hosts¿¡¼­ ¶óÀÎÀ» »Ì¾Æ³» ³×ÀÓ ¼­¹ö named(8)ÀÇ ÀϺγª ¸ðµÎÀÇ Á¶ÇÕ°ú ³×Æ®¿÷ Á¤º¸ ¼­ºñ½º (NIS ¶Ç´Â YP)¸¦ »ç¿ëÇÑ´Ù. ( resolv+(8)¸¦ ÂüÁ¶Çضó.) ±âº» ÇൿÀº /etc/hosts ´ÙÀ½¿¡ named(8)¿¡ ÁúÀÇÇÏ´Â °ÍÀÌ´Ù.

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]  /* ±¸ ¹öÀü°úÀÇ È£È¯À» À§ÇØ */

hostent ±¸Á¶Ã¼ÀÇ ¸â¹ö´Â:

h_name
È£½ºÆ®ÀÇ °ø½ÄÀûÀÎ À̸§
h_aliases
È£½ºÆ®¸¦ À§ÇØ ³Î·Î ³¡³ª´Â ¼±ÅÃÀûÀÎ À̸§ÀÇ ¹è¿­
h_addrtype
ÁÖ¼Ò Å¸ÀÔ; ÇöÀç´Â Ç×»ó AF_INET ÀÌ´Ù.
h_length
¹ÙÀÌÆ®·Î ÁÖ¼ÒÀÇ ±æÀÌ.
h_addr_list
³×Æ®¿÷ ¹ÙÀÌÆ® ¼ø¼­·Î È£½ºÆ®¸¦ À§ÇÑ ³Î·Î Á¾·áµÈ ³×Æ®¿÷ ÁÖ¼Ò ¹è¿­
h_addr
¿¹Àü°úÀÇ È£È¯À» À§ÇØ h_addr_listÀÇ Ã³À½ ÁÖ¼Ò
 

¹Ýȯ°ª

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

¿¡·¯

º¯¼ö h_errno´Â ´ÙÀ½ °ªµéÀ» °¡Áø´Ù:
HOST_NOT_FOUND
ÁöÁ¤µÈ È£½ºÆ®°¡ ¾Ë·ÁÁöÁö ¾Ê¾Ò´Ù.
NO_ADDRESS ³ª NO_DATA
¿ä±¸ÇÑ À̸§ÀÌ À¯È¿ÇÏÁö¸¸ IP ÁÖ¼Ò¸¦ °¡ÁöÁö ¾Ê´Â´Ù.
NO_RECOVERY
º¹±¸ µÉ¼ö ¾ø´Â ³×ÀÓ ¼­¹ö ¿¡·¯°¡ ¹ß»ýÇß´Ù.
TRY_AGAIN
ÀÓ½ÃÀû ¿¡·¯·Î ³×ÀÓ¼­¹ö ÀÎÁõ½Ã ¹ß»ýÇß´Ù. ´Ù½Ã ½ÃµµÇضó.
 

ÆÄÀÏ

/etc/host.conf
Çؼ® ¼³Á¤ ÆÄÀÏ.
/etc/hosts
È£½ºÆ® µ¥ÀÌÅÍ º£À̽º ÆÄÀÏ
 

ȣȯ

BSD 4.3.  

ÁÖÀÇ

SUS-v2 Ç¥ÁØÀº ¹ö±×À̸ç, len ÀÎÀÚ¸¦ size_t ŸÀÔÀ¸·Î ¼±¾ðÇÏ¿´´Ù.(ÀÌ°ÍÀº À߸øµÈ °ÍÀÌ´Ù. ¿Ö³ÄÇÏ¸é ±×°ÍÀº int ÀÌÁö size_t °¡ ¾Æ´Ï±â ¶§¹®ÀÌ´Ù. Austin ÃʾÈÀº socklen_tÀ¸·Î ÇßÀ¸¸ç ÀÌ°ÍÀº °¡´ÉÇÏ´Ù.)

Glibc2´Â ¶ÇÇÑ gethostbyname()ó·³ ÀÛµ¿ÇÏ´Â

struct hostent *gethostbyname2(const char *name, int af);

¸¦ °¡Áö°í ÀÖ´Ù. ±×·¯³ª ±×°ÍÀº ÁÖ¼Ò°¡ ¼ÓÇØ ÀÖ´Â ÁÖ¼Ò °¡Á·À» ÁöÁ¤Çϵµ·Ï ÇÑ´Ù.

Austin ÃʾÈÀº gethostbyaddr() °ú gethostbyname() ¸¦ »ó¼ÓÇÏ´Â ÇÔ¼ö¸¦ ¸¸µé¾úÀ¸¸ç ´ÙÀ½°ú °°ÀÌ ¼Ò°³ÇÏ¿´´Ù.

struct hostent *getipnodebyaddr (const void *restrict addr,
  socklen_t len, int type, int *restrict error_num);

struct hostent *getipnodebyname (const char *name,
  int type, int flags, int *error_num);
 

°ü·Ã Ç׸ñ

resolver(3), hosts(5), hostname(7), resolv+(8), named(8)  

¿ªÀÚ

Á¤°­ÈÆ <skyeyes@soback.kornet.net>, 2001³â 4¿ù 30ÀÏ


 

Index

À̸§
»ç¿ë¹ý
¼³¸í
¹Ýȯ°ª
¿¡·¯
ÆÄÀÏ
ȣȯ
ÁÖÀÇ
°ü·Ã Ç׸ñ
¿ªÀÚ

This document was created by man2html, using the manual pages.
Time: 08:07:01 GMT, March 25, 2004