ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : docbook>gethostbyname(3)
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
HTML º¯È¯¹®¼
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.1//EN"> <chapter lang=ko> <!-- ÀÛ¼ºÀÚ : yundream --> <!-- ÀÛ¼ºÀÏ : 2004/05/06 --> <!-- ¿¬¶ôó : yundream@joinc.co.kr --> <!-- ÇÔ¼ö À̸§À» ÀÔ·ÂÇÕ´Ï´Ù --> <title>gethostbyname(3)</title> <!-- ÀÌ°Ç ÇÔ¼ö¿¡ ´ëÇÑ ´ë·«ÀûÀÎ ¼³¸íÀ̱¸¿ä --> <para> ³×Æ®¿÷ È£½ºÆ® ¸ñ·ÏÀ» °¡Á®¿Â´Ù. </para> <!-- ¿©±â¿¡ ÇÔ¼öÀÇ °£´ÜÇÑ »ç¿ë¹ýÀÌ µé¾î°©´Ï´Ù --> <section> <title>»ç¿ë¹ý</title> <para> <screen> #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); </screen> </para> </section> <!-- ¿©±â¿£ ÇÔ¼öÀÇ ÀÚ¼¼ÇÑ ¼³¸í ÀÌ µé¾î°©´Ï´Ù --> <section> <title>¼³¸í</title> <para> gethostbyname()ÇÔ¼ö´Â ÁÖ¾îÁø È£½ºÆ® <emphasis>name</emphasis>¿¡ »óÀÀÇÏ´Â <emphasis>hostent</emphasis>ŸÀÔÀÇ ±¸Á¶Ã¼¸¦ ¹ÝȯÇÑ´Ù. nameÀº È£½ºÆ®À̸§À̰ųª Ç¥ÁØ Á¡ Ç¥±â¹ýÀÇ IPv4ÁÖ¼Ò, ȤÀº IPv6ÁÖ¼ÒÀÌ´Ù. IPv6¿¡ ´ëÇÑ ³»¿ëÀº <ulink url="http://www.joinc.co.kr/modules.php?name=News&file=article&sid=103">IPv6 ȯ°æ¼³Á¤</ulink>À» Âü°íÇϱ⠹ٶõ´Ù. </para> <para> ¸¸ÀÏ nameÀÌ IPv4³ª IPv6ÁÖ¼Ò¶ó¸é ¾î¶°ÇÑ Ã£±âµµ ÇàÇØÁöÁö ¾Ê°í ´ÜÁö nameÀ» <emphasis>h_name</emphasis>Çʵ忡 º¹»çÇϰí ÇØ´ç in_addr ±¸Á¶Ã¼¸¦ ¹ÝȯÇÏ´Â hostent ±¸Á¶Ã¼ÀÇ h_addr_list[0]¿¡ º¹»çÇÑ´Ù. ¸¸ÀÏ nameÀÌ Á¡À¸·Î ³¡³ªÁö ¾Ê°í ȯ°æº¯¼ö <emphasis>HOSTALIASES</emphasis>°¡ ¼³Á¤µÇ¾î ÀÖ´Ù¸é HOSTALIASES°¡ °¡¸®Å°´Â º°Äª ÆÄÀÏÀÌ nameÀ» À§ÇØ ¿ì¼± Ž»öµÈ´Ù. ÇöÀç µµ¸ÞÀΰú »óÀ§ µµ¸ÞÀÎÀº nameÀÌ Á¡À¸·Î ³¡³ªÁö ¾Ê´Â´Ù¸é Ž»öµÈ´Ù. </para> <para> gethostbyaddr()ÇÔ¼ö´Â ±æÀÌ <emphasis>len</emphasis>, ÁÖ¼ÒŸÀÔÀÌ typedls È£½ºÆ® ÁÖ¼Ò <emphasis>addr</emphasis>¿¡ ÇØ´çÇÏ´Â <emphasis>hostent</emphasis>±¸Á¶Ã¼¸¦ ¸®ÅÏÇÑ´Ù. À¯ÀÏÇÏ°Ô À¯È¿ÇÑ ÁÖ¼Ò Å¸ÀÔÀº ÇöÀç AF_INETÀÌ´Ù. </para> <para> ¸¸ÀÏ stayopenÀÌ Âü(1)À̶ó¸é, sethostent()ÇÔ¼ö´Â ¿¬°áµÈ TCP¼ÒÄÏÀÌ ³×ÀÓ ¼¹ö ÁúÀǸ¦ À§ÇØ »ç¿ëµÇ¾î¾ß ÇÑ´Ù´Â °ÍÀ» °¡¸®Å²´Ù. ±×·¸Áö ¾ÊÀ¸¸é ³×ÀÓ ¼¹öÁúÀÇ¿¡ UDP¸¦ ÀÌ¿ëÇÒ °ÍÀÌ´Ù. </para> <para> endhostent()ÇÔ¼ö´Â ³×ÀÓ ¼¹ö ÁúÀǸ¦ À§ÇÑ TCP¿¬°áÀ» ³¡³½´Ù. </para> <para> herror()ÇÔ¼ö´Â stderr¿¡ ÇöÀç °ªÀÇ h_errno¿¡ »óÀÀÇÏ´Â ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù. ±¸½ÄÀ¸·Î »ç¿ëÇÏÁö ¾Ê´Â´Ù. </para> <para> hsterror()ÇÔ¼ö´Â ¿¡·¯ ³Ñ¹ö¸¦ °¡Áö¸ç »óÀÀÇÏ´Â ¸Þ½ÃÁö¸¦ ¹ÝȯÇÑ´Ù. ±¸½ÄÀ¸·Î »ç¿ëÇÏÁö ¾Ê´Â´Ù. </para> <para> µµ¸ÞÀÎ À̸§ ÁúÀÇ´Â gethostbyname()¿¡ ÀÇÇØ ¼öÇàµÇ¸ç gethostbyaddr()Àº /etc/host.conf¿¡ ÀÖ´Â order¶óÀÎÀÇ ³»¿ë¿¡ ÀÇÁ¸ÇÏ¿© /etc/hosts¿¡¼ ¶óÀÎÀ» »Ì¾Æ³» ³×ÀÓ¼¹öÀÇ ÀϺγª ¸ðµÎÀÇ Á¶ÇÕ°ú NISȤÀº YP¸¦ »ç¿ëÇÑ´Ù. </para> <para> hostent ±¸Á¶Ã¼´Â <netdb.h>¿¡ ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾî ÀÖ´Ù. <screen> 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] /* ±¸ ¹öÀü°úÀÇ È£È¯À» À§ÇØ */ </screen> </para> </section> <!-- ÇÔ¼ö°¡ µÇµ¹·ÁÁÖ´Â °ªÀ̱¸¿ä --> <section> <title>¹Ýȯ°ª</title> <para> gethostbyname() ±×¸®°í gethostbyaddr() ÇÔ¼ö´Â hostent ±¸Á¶Ã¼¸¦ ¹ÝȯÇϰųª ¸¸ÀÏ ¿¡·¯°¡ ¹ß»ýÇÑ´Ù¸é NULL Æ÷ÀÎÅ͸¦ ¹ÝȯÇÑ´Ù. ¿¡·¯½Ã, h_errno º¯¼ö´Â ¿¡·¯ ³Ñ¹ö¸¦ °¡Áø´Ù. </para> </section> <!-- ¿¡·¯°¡ ¹ß»ýÇßÀ»¶§ µÇµ¹·ÁÁÖ´Â °ªµéÀÔ´Ï´Ù --> <section> <title>¿¡·¯</title> <para> º¯¼ö h_errno´Â ´ÙÀ½ °ªµéÀ» °¡Áø´Ù. <variablelist> <varlistentry> <term>HOST_NOT_FOUND</term> <listitem> <para> ÁöÁ¤µÈ È£½ºÆ®°¡ ¾Ë·ÁÁöÁö ¾Ê¾Ò´Ù. </para> </listitem> </varlistentry> <varlistentry> <term>NO_ADDRESS, NO_DATA</term> <listitem> <para> ¿ä±¸ÇÑ À̸§ÀÌ À¯È¿ÇÏÁö¸¸ IPÁÖ¼Ò¸¦ °¡ÁöÁö ¾Ê´Â´Ù. </para> </listitem> </varlistentry> <varlistentry> <term>NO_RECOVERY</term> <listitem> <para> º¹±¸ ºÒ°¡´ÉÇÑ ³×ÀÓ ¼¹ö¿¡·¯°¡ ¹ß»ýÇß´Ù. </para> </listitem> </varlistentry> <varlistentry> <term>TRY_AGIN</term> <listitem> <para> ÀϽÃÀûÀ¸·Î ¹ß»ýÇÑ ¿¡·¯·Î ³×ÀÓ¼¹ö ÀÎÁõ½Ã ¹ß»ýÇß´Ù. ´Ù½Ã ½ÃµµÇÏ¸é µÈ´Ù. </para> </listitem> </varlistentry> </variablelist> </para> </section> <!-- ¸¶Áö¸·À¸·Î ¿¡Á¦ ÀÔ´Ï´Ù --> <!-- ¿©±â¿¡´Â ¿ÏÀüÇÑ ¿¹Á¦°¡ µé¾î°¡ Àִµ¥, ±»ÀÌ ¿ÏÀüÇÑ ¿¹Á¦¸¦ ¸¸µéÇÊ¿ä ¾øÀÌ --> <!-- ÄÚµå ÀϺκи¸ ÀÛ¼ºÇؼ ¿Ã·ÁÁּŵµ µË´Ï´Ù --> <!-- "<", ">", "&" µîÀº º¯È¯ÇØ ÁÖ¼Å¾ß Çϴµ¥, ±ÍÂúÀ¸½Ã¸é :-) º¯È¯ ÇÏÁö ¾Ê --> <!-- ¾Æµµ µË´Ï´Ù. Á¦°¡ °Ë»ç ÇØ¼ ¿Ã¸®°Ú½À´Ï´Ù --> <!-- ¿¹Á¦¿¡ ´ëÇÑ °£´ÜÇÑ ¼³¸íÀ» Àû¾îÁּŵµ µÇ±¸¿ä --> <section> <title>¿¹Á¦</title> <para> <screen> #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++; } } </screen> ´ÙÀ½Àº Å×½ºÆ® °á°ú´Ù. <screen> [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 ... </screen> </para> </section> <section> <title>Âü°í¹®Çå</title> <para> <orderedlist> <listitem> <para> <ulink url="http://www.joinc.co.kr/modules/moniwiki/wiki.php/article_ÀÎÅͳÝ_ÁÖ¼Ò_º¯È¯">ÀÎÅÍ³Ý ÁÖ¼Ò º¯È¯</ulink> </para> </listitem> </orderedlist> </para> </section> </chapter> |
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|