ÇöÀç°Á : UNIX BSD ¼ÒÄÏ ½Ã½ºÅÛ ÄÝ ÀÌÀü: 2.1 ¼ÒÄÏÀÇ ÀÌÇØ ´ÙÀ½: 2.3 Ŭ¶óÀ̾ðÆ®ÇÁ·Î±×·¥ ÀÛ¼º ÀýÂ÷
2.2 ÀÎÅÍ³Ý ÁÖ¼Òº¯È¯
¢º ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö ÀýÂ÷¸¦ ¼³¸íÇϱ⿡ ¾Õ¼ º» Àý¿¡¼´Â ¹ÙÀÌÆ® ¼ø¼ º¯È¯°ú ÀÎÅÍ³Ý ÁÖ¼Òº¯È¯À» ¼Ò°³ÇÏ°Ú´Ù.
¢º ÀÎÅͳݿ¡´Â ¿©·¯ °¡Áö Á¾·ùÀÇ ÄÄÇ»Å͵éÀÌ Á¢¼ÓµÇ¾î ÀÖ°í °¢ ÄÄÇ»Å͸¶´Ù µ¥ÀÌÅÍ(¼ýÀÚ, ¹®ÀÚ µî)¸¦ ÄÄÇ»ÅÍ ³»ºÎ¿¡¼ Ç¥ÇöÇÏ´Â ¹æ½ÄÀÌ ´Ù¸£´Ù. µû¶ó¼ µ¥ÀÌÅ͸¦ ´Ù¸¥ ±âÁ¾ÀÇ ÄÄÇ»ÅÍ·Î ±×´ë·Î Àü¼ÛÇÏ¸é ¹®Á¦°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Ù.
¢º ÀÌ·¯ÇÑ Åë½Å»óÀÇ ¹®Á¦¸¦ ÇÇÇϱâ À§ÇÏ¿© µ¥ÀÌÅ͸¦ Àü¼ÛÇϱâ Àü¿¡ ±×¸®°í µ¥ÀÌÅ͸¦ ¼ö½ÅÇÑ ÈÄ¿¡ ¹ÙÀÌÆ® ¼ø¼¸¦ ¸ÂÃß´Â ÀýÂ÷°¡ ÇÊ¿äÇÏ´Ù.
¢º ÇÑÆí ÀÎÅÍ³Ý ÁÖ¼Ò¸¦ Ç¥ÇöÇÏ´Â ¹æ½Ä¿¡´Â µµ¸ÞÀÎ ³×ÀÓ, 32ºñÆ®ÀÇ IP ÁÖ¼Ò, ±×¸®°í ½ÊÁø¼ö(dotted decimal) Ç¥½Ã¹ý µî ¼¼ °¡Áö ¹æ½ÄÀÌ ÀÖÀ¸¸ç À̵é ÁÖ¼Ò Ç¥Çö¹ýÀ» ÀÚÀ¯·Ó°Ô º¯È¯ÇÒ ¼ö ÀÖ´Â ÇÔ¼ö°¡ ÇÊ¿äÇÏ´Ù.
2.2.1 ¹ÙÀÌÆ® ¼ø¼
¢º ¹ÙÀÌÆ® ¼ø¼(byte ordering)¿¡´Â È£½ºÆ® ¹ÙÀÌÆ® ¼ø¼¿Í ³×Æ®¿÷ ¹ÙÀÌÆ® ¼ø¼ µÎ °¡Áö°¡ ÀÖ´Ù.
¢º È£½ºÆ® ¹ÙÀÌÆ® ¼ø¼´Â ÄÄÇ»ÅÍ°¡ ³»ºÎ ¸Þ¸ð¸®¿¡ ¼ýÀÚ¸¦ ÀúÀåÇÏ´Â ¼ø¼¸¦ ¸»Çϴµ¥, ÀÌ°ÍÀº ÄÄÇ»ÅÍÀÇ CPUÀÇ Á¾·ù¿¡ µû¶ó ´Ù¸£´Ù.
¢º PC¿¡¼ ³Î¸® »ç¿ëµÇ´Â 80x86°è¿ÀÇ CPU°¡ »ç¿ëÇϴ ȣ½ºÆ® ¹ÙÀÌÆ® ¼ø¼´Â ¿¹¸¦µé¾î µÎ ¹ÙÀÌÆ®·Î ±¸¼ºµÈ ½ÊÁø¼ö 50146ÀÇ °æ¿ì hexa·Î 0xC3E2À̸ç ÀÌ°ÍÀº 80x86 °è¿ÀÇ CPU¿¡¼´Â E2, C3ÀÇ ¼ø¼·Î(Áï, ÇÏÀ§ ¹ÙÀÌÆ®ºÎÅÍ) ¸Þ¸ð¸®¿¡ ÀúÀåµÇ°í MC68000 °è¿ÀÇ CPU¿¡¼´Â C3, E2ÀÇ ¼ø¼·Î ¸Þ¸ð¸®¿¡ ÀúÀåµÈ´Ù.
±×¸² 2-5 0xC3E2(½ÊÁø¼ö 50146)ÀÇ È£½ºÆ® ¹ÙÀÌÆ® ¼ø¼ ºñ±³
¢º ÇÑÆí ³×Æ®¿÷ ¹ÙÀÌÆ® ¼ø¼´Â ³×Æ®¿÷¿¡¼ ¹ÙÀÌÆ® ´ÜÀ§·Î µ¥ÀÌÅÍ°¡ Àü´ÞµÇ´Â ¼ø¼¸¦ ¸»Çϴµ¥ 2¹ÙÀÌÆ®ÀÇ ¼ö 0xC3E2ÀÇ °æ¿ì C3, E2ÀÇ ¼ø¼·Î Áï, »óÀ§ ¹ÙÀÌÆ®ºÎÅÍ Àü¼ÛµÈ´Ù.
¢º Áï, 80x86°è¿ÀÇ CPU°¡ »ç¿ëÇϴ ȣ½ºÆ® ¹ÙÀÌÆ® ¼ø¼´Â ³×Æ®¿÷ ¹ÙÀÌÆ® ¼ø¼¿Í ´Ù¸£´Ù. µû¶ó¼ 80x86°è¿ÀÇ ÄÄÇ»ÅÍ¿¡¼ ³×Æ®¿÷À» ÅëÇÏ¿© Àü¼ÛÇÑ µ¥ÀÌÅ͸¦ 68000°è¿ÀÇ ÄÄÇ»ÅÍ°¡ ¼ö½ÅÇÏ¸é ¹ÙÀÌÆ® ¼ø¼°¡ ¹Ù²î°Ô µÈ´Ù.
¢º ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇÏ¿© ÄÄÇ»ÅÍ ³»ºÎ¿¡¼ ¸¸µé¾îÁø È£½ºÆ® ¹ÙÀÌÆ® ¼ø¼ÀÇ µ¥ÀÌÅ͸¦ ³×Æ®¿÷À¸·Î Àü¼ÛÇϱâ Àü¿¡ htons() ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ¸ðµÎ ³×Æ®¿÷ ¹ÙÀÌÆ® ¼ø¼·Î ¹Ù²Ù¾î¾ß ÇÑ´Ù.
¢º ¹Ý´ë·Î ³×Æ®¿÷¿¡¼ ¼ö½ÅÇÑ µ¥ÀÌÅÍ´Â ntohs() ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© Àڽſ¡°Ô ¸Â´Â È£½ºÆ® ¹ÙÀÌÆ® ¼ø¼·Î Ç×»ó ¹Ù²Ù¾î¾ß ÇÑ´Ù.
¢º Áï, ³×Æ®¿÷ ¹ÙÀÌÆ® ¼ø¼¸¦ ÁöÄÑ µ¥ÀÌÅ͸¦ Àü¼ÛÇÔÀ¸·Î½á ¼ö½ÅÇÑ µ¥ÀÌÅÍ°¡ ¾î¶² Á¾·ùÀÇ ÄÄÇ»ÅÍ¿¡¼ ¸¸µé¾îÁø °ÍÀÎÁö ¾Ë ÇÊ¿ä°¡ ¾øµµ·Ï ÇÏ´Â °ÍÀÌ´Ù.
¢º À§¿¡¼ MC68000 °è¿ÀÇ CPU¿¡¼´Â È£½ºÆ® ¹ÙÀÌÆ® ¼ø¼¿Í ³×Æ®¿÷ ¹ÙÀÌÆ® ¼ø¼°¡ °°Àº °ÍÀ» ¾Ë ¼ö Àִµ¥ ÀÌ·¯ÇÑ È£½ºÆ®¿¡¼ÀÇ htons()¿Í ntohs() ÇÔ¼ö´Â ¾Æ¹« Àϵµ ÇÏÁö ¾Ê°Ô µÈ´Ù.
¢º ¹ÙÀÌÆ® ¼ø¼¸¦ ¹Ù²Ù´Â ÇÔ¼ö¿¡´Â º¯È¯ÇÒ ¹ÙÀÌÆ® ±æÀÌ¿¡ µû¶ó ´ÙÀ½°ú °°ÀÌ µÎ °¡Áö Á¾·ù°¡ ÀÖ´Ù.
- Unsigned short interger º¯È¯ (2¹ÙÀÌÆ® ü°è)
- htons() : host-to-network ¹ÙÀÌÆ® º¯È¯
- ntohs() : network-to-host ¹ÙÀÌÆ® º¯È¯
- Unsigned long interger º¯È¯ (4¹ÙÀÌÆ® ü°è)
- htonl() : host-to-network ¹ÙÀÌÆ® º¯È¯
- ntohl() : network-to-host ¹ÙÀÌÆ® º¯È¯
¡¡
2.2.2 ¹ÙÀÌÆ® ¼ø¼ ¿¹Á¦ ÇÁ·Î±×·¥
¢º ¿©±â¼´Â ÇöÀç »ç¿ëÁßÀÎ ÄÄÇ»ÅÍÀÇ È£½ºÆ® ¹ÙÀÌÆ® ¼ø¼°¡ ³×Æ®¿÷ ¹ÙÀÌÆ® ¼ø¼¿Í °°ÀºÁö¸¦ ¾Ë¾Æº¸´Â Å×½ºÆ® ÇÁ·Î±×·¥ byte_order.c¸¦ ¼Ò°³ÇÑ´Ù.
¢º byte_order.c¿¡¼´Â ¸ÕÀú udp¸¦ »ç¿ëÇÏ´Â echo ¼ºñ½ºÀÇ Æ÷Æ®¹øÈ£¸¦ ¾Ë¾Æ³»±â À§ÇÏ¿© getservbyname() ½Ã½ºÅÛ ÄÝÀ» ´ÙÀ½°ú °°ÀÌ È£ÃâÇÑ´Ù.
pmyservent = getservbyname("echo", "udp"); |
¢º getservbyname()Àº well-known Æ÷Æ®¸¦ »ç¿ëÇÏ´Â TCP/IP ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ Æ÷Æ®¹øÈ£¸¦ ¾Ë¾Æ³»´Â ÇÔ¼öÀÌ´Ù.
¢º ¼ºñ½º À̸§°ú ÇÁ·ÎÅäÄÝÀ» ÀÎÀÚ·Î ÇÏ¿© È£ÃâÇÏ¸é ¼ºñ½º °ü·Ã °¢Á¾ Á¤º¸¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â servent¶ó´Â ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÑ´Ù.
¡¡
struct servent {
char *s_name; /* ¼ºñ½º À̸§ */ char **s_aliases; /* º°¸í ¸ñ·Ï */ int s_port; /* Æ÷Æ®¹øÈ£ */ char *s_proto; /* »ç¿ëÇÏ´Â ÇÁ·ÎÅäÄÝ */ }; |
¢º servent ±¸Á¶Ã¼´Â ³×Æ®¿÷À¸·ÎºÎÅÍ ¾òÀº Á¤º¸À̹ǷΠ±× ³»¿ëÀÌ ³×Æ®¿÷ ¹ÙÀÌÆ® ¼ø¼·Î µÇ¾î ÀÖ°í À̸¦ ȸ鿡 Ãâ·ÂÇØ º¸·Á¸é È£½ºÆ® ¹ÙÀÌÆ® ¼ø¼·Î ¹Ù²Ù¾î¾ß ÇÑ´Ù.
¢º ¿¹Á¦ byte_order.c¿¡¼´Â servent¿¡ µé¾î ÀÖ´Â Æ÷Æ®¹øÈ£(s_port)¸¦ (Á¤»óÀûÀ¸·Î) È£½ºÆ® ¹ÙÀÌÆ® ¼ø¼·Î ¹Ù²Ù¾î Ãâ·ÂÇØ º¸°í ¶ÇÇÑ ¹ÙÀÌÆ® ¼ø¼ º¯È¯ ¾øÀÌ ±×´ë·Î Ãâ·ÂÇÏ¿© À̵éÀ» ºñ±³ÇØ º»´Ù.
/*-----------------------------------------------------------------------------------------------
ÆÄÀϸí : byte_order.c ±â ´É : È£½ºÆ® ¹ÙÀÌÆ® ¼ø¼ Å×½ºÆ® ÇÁ·Î±×·¥ ÄÄÆÄÀÏ : cc -o byte_order byte_order.c -lsocket ½ÇÇ࿹ : byte_order ---------------------------------------------------------------------------------------------- */ #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> void main(void) { struct servent *pmyservent; pmyservent = getservbyname( "echo", "udp" ); if( pmyservent == NULL ) { printf( "¼ºñ½º Á¤º¸¸¦ ¾òÀ» ¼ö ¾øÀ½. \n\n" ); exit( 1 ); } printf( "Port number of 'echo', 'udp' with ntohs() : %d \n", pmyservent->s_port ); printf( "Port number of 'echo', 'udp' without ntohs() : %d \n", ntohs(pmyservent->s_port)); exit( 0 ); } |
¡¡
¢º MC68000 °è¿ÀÇ CPU¸¦ »ç¿ëÇÏ´Â SUN ÄÄÇ»ÅÍ¿¡¼´Â byte_order.cÀÇ ½ÇÇà°á°ú°¡ ¾Æ·¡¿Í °°À¸¸ç È£½ºÆ® ¹ÙÀÌÆ® ¼ø¼°¡ ³×Æ®¿÷ ¹ÙÀÌÆ® ¼ø¼¿Í °°´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù.
¡¡
# byte_order Port number of 'echo', 'udp' with ntohs() : 7 Port number of 'echo', 'udp' without ntohs() : 7 # |
¡¡
¢º ÇÑÆí, ÀÎÅÚ 80x86 °è¿ÀÇ CPU¸¦ »ç¿ëÇÏ´Â IBM-PC¿¡¼ byte_order.c¸¦ ½ÇÇàÇÏ¸é °á°ú°¡ ¾Æ·¡¿Í °°À¸¸ç µû¶ó¼ È£½ºÆ® ¹ÙÀÌÆ® ¼ø¼°¡ ³×Æ®¿÷ ¹ÙÀÌÆ® ¼ø¼¿Í ´Ù¸£´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù.
¢º ¾Æ·¡¿¡¼ Á¤¼ö 1792´Â 2¹ÙÀÌÆ® ¼ýÀÚ 0x0007ÀÇ ¹ÙÀÌÆ® ¼ø¼°¡ ¼·Î ¹Ù²ï 0x0700ÀÇ ½ÊÁø¼öÀÌ´Ù(Æ÷Æ®¹øÈ£´Â 2¹ÙÀÌÆ®·Î µÇ¾î ÀÖÀ½).
# byte_order Port number of 'echo', 'udp' with ntohs() : 7 Port number of 'echo', 'udp' without ntohs() : 1792 # |
¡¡
2.2.3 IP ÁÖ¼Òº¯È¯
¢º 32ºñÆ®ÀÇ IP ÁÖ¼Ò¸¦ ÆíÀÇ¿¡ µû¶ó cc.kangwon.ac.kr°ú °°Àº µµ¸ÞÀÎ ³×ÀÓ, ±×¸®°í192.203.144.11°ú °°Àº dotted decimal Ç¥½Ã¹ý µîÀ¸·Î ¹Ù²Ù¾î ³Î¸® »ç¿ëÇÏ°í ÀÖ´Ù.
¢º ¼ÒÄÏ ÇÁ·Î±×·¥¿¡¼´Â À̵é ÁÖ¼Ò Ç¥Çö¹ýÀ» ÀÚÀ¯·Ó°Ô º¯È¯ÇÒ ¼ö ÀÖ´Â ÇÔ¼ö°¡ ÇÊ¿äÇÏ¸ç ±×¸² 2-6¿¡ ÀÌµé ¼¼ °¡Áö ÀÎÅÍ³Ý ÁÖ¼Ò Ç¥Çö ¹æ¹ý°ú À̵éÀ» »óÈ£ º¯È¯ÇÏ´Â µ¥ »ç¿ëµÇ´Â ³× °¡Áö ÁÖ¼Òº¯È¯ ÇÔ¼ö¸¦ ³ªÅ¸³Â´Ù.
¢º ÇÑÆí IP ÆÐŶÀ» ³×Æ®¿÷À¸·Î ½ÇÁ¦·Î Àü¼ÛÇÒ ¶§¿¡´Â 32ºñÆ®ÀÇ (binary) IP ÁÖ¼Ò°¡ ÇÊ¿äÇÏ´Ù.
¢º ¿¹¸¦µé¾î ±×¸² 2-6¿¡¼ dotted decimal·Î Ç¥ÇöµÈ 192. 203.144.11À» 32ºñÆ®ÀÇ IP ÁÖ¼Ò·Î º¯È¯ÇÏ·Á¸é inet_addr() ½Ã½ºÅÛ ÄÝÀ» »ç¿ëÇÏ°í IP ÁÖ¼Ò¸¦ ´Ù½Ã dotted decimal·Î º¯È¯ÇÏ·Á¸é inet_ntoa()¸¦ »ç¿ëÇÑ´Ù.
±×¸² 2-6 IP ÁÖ¼Ò Ç¥ÇöÀÇ ¼¼°¡Áö ¹æ¹ý ¹× À̵éÀÇ »óÈ£ º¯È¯ ÇÔ¼ö
¢º ´ÙÀ½Àº À̸¦ ¼öÇàÇÏ´Â ÄÚµåÀε¥ ÀÌÀÇ ½ÇÇà °á°ú·Î 192. 203.144.11ÀÇ IP ÁÖ¼ÒÀÎ 4¹ÙÀÌÆ®ÀÇ hexa c0cb900b¿Í, À̸¦ ´Ù½Ã dotted decimal ÁÖ¼Ò·Î ¹Ù²Û 192.203.144.11ÀÌ È¸é¿¡ Ãâ·ÂµÈ´Ù.
struct sockaddr_in
server_addr; server_addr.sin_addr.s_addr = inet_addr ("192.203.144.11"); printf("%x\n", server_addr.sin_addr.s_addr); /* hexa 4¹ÙÀÌÆ® Ãâ·Â */ printf("%s\n", inet_ntoa(server_addr.sin_addr));/* dotted decimal Ãâ·Â */ |
¢º ÇÑÆí µµ¸ÞÀÎ ³×ÀÓÀ¸·ÎºÎÅÍ IP ÁÖ¼Ò¸¦ ¾Ë±â À§Çؼ´Â get- hostbyname() ½Ã½ºÅÛ ÄÝÀ» »ç¿ëÇϴµ¥ ¾Æ·¡´Â gethostby- name()ÀÇ »ç¿ë ¿¹ÀÌ´Ù.
struct hostent *gethostbyname(char *hname); |
¢º À§¿¡¼ gethostbyname()Àº µµ¸ÞÀÎ ³×ÀÓ hnameÀ» ÀÔ·ÂÀ¸·Î ¹Þ°í(¿¹¸¦µé¸é cc.kangwon.ac.kr) ±× À̸§¿¡ ÇØ´çÇϴ ȣ½ºÆ®ÀÇ °¢Á¾ Á¤º¸¸¦ °¡Áö°í ÀÖ´Â hostent¶ó´Â ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÑ´Ù.
¢º ±¸Á¶Ã¼ hostentÀÇ Á¤ÀÇ´Â ´ÙÀ½°ú °°´Ù.
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 ±¸Á¶Ã¼ Á¤º¸¸¦ gethostbyname()À» ÀÌ¿ëÇÏ¿© ±¸ÇÑ ÈÄ, hostent ±¸Á¶Ã¼ÀÇ ³»¿ëÀ» ¸ðµÎ Ãâ·ÂÇØ º¸´Â ¿¹Á¦ ÇÁ·Î±×·¥ host_ent.c¸¦ ¼Ò°³ÇÑ´Ù.
¢º host_ent.cÀÇ ½ÇÇà ¿¹´Â ´ÙÀ½°ú °°´Ù.
# host_ent
telecom.kangwon.ac.kr official host name : telecom.kangwon.ac.kr host address type : 2 length of host address : 4 address for host : 203.252.65.9 # |
¢º host_ent.c¿¡¼´Â ¸ÕÀú ¸ñÀûÁö È£½ºÆ®ÀÇ µµ¸ÞÀÎ ³×ÀÓÀ» ÇÁ·Î±×·¥ ¸í·É ÀÎÀÚ·Î ¹Þ°í(À§¿¡¼´Â telecom.kangwon. ac.kr), gethostbyname()À» È£ÃâÇÏ¿© ¸ñÀûÁö È£½ºÆ®ÀÇ hostent ±¸Á¶Ã¼¸¦ ±¸ÇÑ´Ù.
¢º ´ÙÀ½¿¡´Â hostent³»¿¡ Àִ ȣ½ºÆ® À̸§, º°¸í(ÀÖÀ¸¸é), ÁÖ¼Ò Ã¼°è, dotted decimal ÀÎÅÍ³Ý ÁÖ¼Ò¸¦ ȸ鿡 Ãâ·ÂÇÑ´Ù.
¢º ¿©±â¼ ÁÖ¼Ò Ã¼°è°¡ ÀÎÅͳÝÀÏ ¶§´Â AF_INET°¡ µÇ´Âµ¥ AF_INETÀÇ °ªÀº Á¤¼ö 2ÀÌ´Ù.
¡¡
2.2.4 ÁÖ¼Òº¯È¯ ¿¹Á¦ ÇÁ·Î±×·¥
(1) ÇÁ·Î±×·¥ ¼³¸í
¢º ¿©±â¼´Â µµ¸ÞÀÎ ³×ÀÓ, dotted decimal ÁÖ¼Ò, ÀÌÁø¼ö IP ÁÖ¼Ò¸¦ »óÈ£ º¯È¯ÇÏ´Â °ÍÀ» È®ÀÎÇÏ´Â ¿¹Á¦ addr_conv.c¸¦ ¼Ò°³ÇÑ´Ù.
¢º ±×¸² 2-6¿¡¼ gethostbyname()Àº µµ¸ÞÀÎ ³×ÀÓÀ¸·ÎºÎÅÍ IP ÁÖ¼Ò¸¦ ¾ò´Â ÇÔ¼öÀÌ°í gethostbyaddr()Àº ¹Ý´ë·Î IP ÁּҷκÎÅÍ µµ¸ÞÀÎ ³×ÀÓÀ» ¾ò´Â ÇÔ¼öÀÌ´Ù.
¢º ÀÌµé µÎ ÇÔ¼ö´Â ¸ðµÎ È£½ºÆ®ÀÇ °¢Á¾ Á¤º¸¸¦ ÀúÀåÇÑ ±¸Á¶Ã¼ hostentÀÇ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÑ´Ù.
¢º addr_conv.c¿¡¼´Â Å°º¸µå¿¡¼ ¸ñÀûÁö È£½ºÆ®ÀÇ µµ¸ÞÀÎ ³×ÀÓ°ú dotted decimal ÁÖ¼Ò µÎ °¡Áö ÁÖ¼Ò¸¦ ÀÔ·Â ¹Þ°í ´ÙÀ½ÀÇ ³× °¡Áö ±â´ÉÀ» ¼öÇàÇÑ´Ù.
1) ÀÔ·ÂµÈ ¸ñÀûÁö µµ¸ÞÀÎ ³×ÀÓÀ¸·ÎºÎÅÍ IP ÁÖ¼Ò¸¦ ã¾Æ ȸ鿡 Ãâ·Â (gethostbyname() ÀÌ¿ë)
2) À§ 1)¿¡¼ ±¸ÇÑ IP ÁÖ¼Ò¸¦ dotted decimal ÁÖ¼Ò·Î º¯°æÇÏ¿© ȸ鿡 Ãâ·Â (inet_ntoa() ÀÌ¿ë)
3) ÀÔ·ÂµÈ dotted decimal ÁּҷκÎÅÍ IP ÁÖ¼Ò¸¦ ã¾Æ ȸ鿡 Ãâ·Â (gethostbyaddr() ÀÌ¿ë)
4) À§ 3)¿¡¼ ±¸ÇÑ hostent ±¸Á¶Ã¼³»¿¡ ÀÖ´Â ¸ñÀûÁö µµ¸ÞÀÎ ³×ÀÓÀ» ȸ鿡 Ãâ·Â
¢º ÇÁ·Î±×·¥ addr_conv.cÀÇ ½ÇÇà ¿¹´Â ´ÙÀ½°ú °°´Ù.
# addr_conv
vcn.kangwon.ac.kr 203.252.65.3 vcn.kangwon.ac.kr's binary IP address (hexa) : cbfc4103 vcn.kangwon.ac.kr's dotted decimal IP address : 203.252.65.3 203.252.65.3's binary ip address (hexa) : cbfc4103 203.252.65.3's hostname : vcn.kangwon.ac.kr # |
¡¡
2.2.5 ±âŸ ÁÖ¼Ò °ü·Ã ÇÔ¼ö
¢º ¾Õ¿¡¼ ¼Ò°³ÇÑ ÁÖ¼Òº¯È¯ ÇÔ¼ö ÀÌ¿Ü¿¡µµ BSD ¼ÒÄÏÀº getXbyY() ÇüÅÂÀÇ È£½ºÆ® Á¤º¸ °Ë»ö ÇÔ¼öµéÀ» Á¦°øÇÏ°í ÀÖ´Ù.
¢º À̵éÀÇ ÀÚ¼¼ÇÑ »ç¿ëÀº ºÎ·Ï A¸¦ ÂüÁ¶Çϱ⠹ٶó°í ¿©±â¼´Â ´ÙÀ½ÀÇ µÎ °¡Áö ÇÔ¼ö¸¸ ¼Ò°³ÇÑ´Ù.
(1) gethostname()
¢ºÇöÀç »ç¿ëÁßÀÎ ÄÄÇ»ÅÍÀÇ µµ¸ÞÀÎ ³×ÀÓ, ¿¹¸¦µé¾î 'cc.kangwon. ac.kr'°ú °°Àº À̸§À» ¾Ë±â À§ÇÏ¿© gethostname()À» »ç¿ëÇÑ´Ù.
¢º ¾Æ·¡ÀÇ ¿¹¿¡¼ ¹®ÀÚ¿ º¯¼ö hname¿¡ ÇöÀç »ç¿ëÁßÀΠȣ½ºÆ®ÀÇ µµ¸ÞÀÎ ³×ÀÓÀÌ ÀúÀåµÈ´Ù.
#define HOST_NAME_LEN
50 /* È£½ºÆ®
À̸§ÀÇ ÃÖ´ë
±æÀÌ */
char hname[HOST_NAME_LEN + 1];/* È£½ºÆ® À̸§À» ÀúÀåÇÒ ¹öÆÛ */ gethostname(hname, HOST_NAME_LEN); |
(2) sethostname()
¢º »ç¿ëÁßÀΠȣ½ºÆ®ÀÇ µµ¸ÞÀÎ ³×ÀÓÀ» »õ·Î¿î °ªÀ¸·Î ÁöÁ¤ÇÒ ¶§ »ç¿ëÇϴµ¥ ¾Æ·¡ÀÇ ¿¹¿¡¼´Â È£½ºÆ®ÀÇ À̸§À» new. kangwon.ac.kr·Î ¹Ù²Û´Ù.
sethostname("new.kangwon.ac.kr", strlen("new.kangwon.ac.kr")); |
ÇöÀç°Á : UNIX BSD ¼ÒÄÏ ½Ã½ºÅÛ ÄÝ ÀÌÀü: 2.1 ¼ÒÄÏÀÇ ÀÌÇØ ´ÙÀ½: 2.3 Ŭ¶óÀ̾ðÆ®ÇÁ·Î±×·¥ ÀÛ¼º ÀýÂ÷