#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);
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 ±¸Á¶Ã¼ÀÇ ¸â¹ö´Â:
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);