Á¤¿µÁØ/ÀÚÀ¯±â°í°¡
|
¹Ù¾ßÈå·Î ÀÎÅͳÝ/Åë½ÅÀ» ¸ð¸£¸é ÄĸÍÀ̶ó´Â ¼Ò¸± µè´Â ½Ã´ë°¡ ¿Ô´Ù. ÄÄÇ»ÅÍÀÇ ÁÖ¿ä ±â´É ¶ÇÇÑ ³×Æ®¿÷À¸·Î µÇ¾î °¡°í ÀÖ´Ù. ³×Æ®¿÷ÀÌ °Á¡ÀÎ À¯´Ð½º/¸®´ª½º°¡ ±â½ÂÀ» ºÎ¸± ¶§ÀÌ´Ù. À¯´Ð½ºÀÇ ²ÉÀ̶ó ÇÒ ¼ö ÀÖ´Â ³×Æ®¿÷ ÇÁ·Î±×·¡¹ÖÀ» °øºÎÇÔÀ¸·Î½á ÁøÁ¤ÇÑ À¯´Ð½º ÇÁ·Î±×·¡¸Ó°¡ µÇ¾î º¸ÀÚ.
Connection-oriented socket À̶õ? À¯´Ð½ºÀÇ ¸ðµç °ÍÀº ÆÄÀÏÀ̶ó´Â ¸»ÀÌ ÀÖ´Ù. ÀÌ
¸»Àº À¯´Ð½º ÇÁ·Î±×·¡¹ÖÀ» ÇØ º¸¸é ¸ðµç I/OÀÛ¾÷ÀÌ ÆÄÀÏ¿¡
¾²°í ÀÐÀ½À¸·Î½á ÀÌ·ç¾î Áø´Ù´Â ¸»ÀÌ´Ù. ³×Æ®¿÷ÀÇ ÀÛµ¿ ¶ÇÇÑ ¸¶Âù°¡ÁöÀÌ´Ù.
¾çÂÊÀÇ ÄÄÇ»ÅÍ°¡ °¢°¢ ÆÄÀÏ, Áï socket À» ¿¾î¼ ±× ÆÄÀÏÀ» ¿¬°á½ÃÄÑ
Åë½ÅÀÌ ÀÌ·ç¾îÁö´Â °ÍÀÌ´Ù. Stream socketÀº ¾ÈÁ¤ÀûÀÎ ¾ç¹æÇâÀÇ ¿¬°áÀ» ¸¸µé
¶§ ÇÊ¿äÇÑ ¼ÒÄÏÀÌ´Ù. ÀÌ ¿¬°áÀº ¾ç¹æÇâÀ¸·Î Åë½ÅÀÌ °¡´ÉÇϸç, µ¥ÀÌÅ͵éÀÇ
¼ø¼°¡ Á¤È®ÇÏ´Ù. ¶ÇÇÑ ÀÌ ¿¬°áÀº tcp ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇϹǷΠ¿¡·¯
üŷÀÌ µÇ¾î ¾ÈÁ¤ÀûÀÎ µ¥ÀÌÅÍ Àü¼ÛÀÌ °¡´ÉÇÏ´Ù. telnet À̳ª http.ftp
µî°ú °°ÀÌ »óÈ£ ÀÛ¿ëÀÌ ÇÊ¿äÇÏ°í ¾ÈÁ¤ÀûÀÎ ¿¬°áÀÌ ¿ä±¸µÉ ¶§ ¹Ù·Î
ÀÌ ¼ÒÄÏÀ» »ç¿ëÇÑ´Ù. ÀÌ ¼ÒÄÏÀ» ´Ù¸¥ ¸»·Î connection-oriented
socket À̶ó°íµµ ÇÑ´Ù. ¹Ý¸é datagram socketÀº ´Ü¹æÇâ ÀÏȸ¼ºÀ̶ó ÇÒ
¼ö ÀÖ´Ù. ÇϳªÀÇ packet(µ¥ÀÌÅÍ µ¢¾î¸®)¿¡ ÁÖ¼Ò¸¦ Áý¾î³Ö¾î º¸³»¸é
±× ÆÐŶÀÌ È¥ÀÚ¼ ¸ñÀûÁö·Î ã¾Æ°¡´Â ¹æ½ÄÀÌ´Ù. ÀÌ·¸±â ¶§¹®¿¡ ¿¬°áÀ»
½ÃÄѳõÀ» ÇÊ¿ä°¡ ¾ø¾î ÀÏȸ¼ºÀ̸ç, ÀÌ ÆÐÆÂÀÌ Àü¼Û µµÁß ºÐ½ÇµÉ
¼öµµ ÀÖ´Ù. tftp³ª bootp°°Àº ÇÁ·Î±×·¥ÀÌ ÀÌ·¯ÇÑ ¼ÒÄÏÀ» »ç¿ëÇÑ´Ù.
ÀÌ °Á¿¡¼ ¿ì¸®´Â ¸î °¡Áö ¿¹Á¦¸¦ ÅëÇÏ¿© connection-oriented socket¿¡ ´ëÇØ ½ÉµµÀÖ°Ô °øºÎ¸¦ ÇÏ°Ô µÉ °ÍÀÌ´Ù.
¼ÒÄÏ °ü·Ã ½Ã½ºÅÛ È£Ãâ connection-oriented socketÀ» ¸¸µé¾î ¿¬°áÀ» Çϱâ À§Çؼ´Â ´ÙÀ½°ú °°Àº °úÁ¤ÀÌ ÇÊ¿äÇÏ´Ù. Server: socket() -> bind() ->listen()
-> accept() ÀÌ ½Ã½ºÅÛ È£ÃâµéÀº ´ëºÎºÐ sockaddr ±¸Á¶Ã¼¸¦ Àμö·Î ÇÊ¿ä·Î ÇÑ´Ù. sockaddr ±¸Á¶Ã¼´Â ´ÙÀ½°ú °°´Ù. #include <sys/socket.h> ¿©·¯ Á¾·ùÀÇ ¼ÒÄÏÀÌ °°Àº ½Ã½ºÅÛ ÄÝÀ» ÀÌ¿ëÇϱâ
¶§¹®¿¡ sockaddr ±¸Á¶Ã¼¿¡¼ ¼ÒÄÏ Á¾·ù¿¡ ÀÇÁ¸ÀûÀÎ ºÎºÐÀº sa_data[]¿Í
°°ÀÌ ¹è¿·Î ³²°Ü µÎ¾ú´Ù. Sa_family´Â ÇÁ·ÎÅäÄÝÀÇ Á¾·ù¸¦ °áÁ¤ÇÏ´Â
°ÍÀ¸·Î, ¿ì¸®°¡ »ç¿ëÇÒ °ÍÀº AF_inet(Internetfamily) ÀÌ´Ù. familyÀÇ
Á¾·ù·Î´Â af_INET ¿Ü¿¡ AF_UNIX, AF_NSµîÀÌ ÀÖ´Ù. #include <netinet/in.h> sin_family´Â AF_INET·Î ÁöÁ¤µÉ °ÍÀ̸ç, sin_port´Â Æ÷Æ®¹øÈ£, sin_addrÀº ÀÎÅÍ³Ý ÁÖ¼Ò¸¦ ÁöÁ¤ÇÑ´Ù. Sin_zero[]´Â sockaddr°ú Å©±â¸¦ ¸ÂÃß±â À§ÇÑ ¹è¿À̱⠶§¹®¿¡ sockaddr_inÀ» »ç¿ëÇϱâ Àü¿¡ bzero()³ª memset()À» ÀÌ¿ëÇؼ 0À¸·Î ÃʱâÈÇÑ´Ù. Byte Ordering Routine ÄÄÇ»ÅÍ ¸¶´Ù byteµéÀ» º¯¼ö¿¡ ÀúÀåÇÏ´Â ¼ø¼°¡ ´Ù¸£´Ù. ±×·¡¼ ´Ù¸¥ ÄÄÇ»Åͳ¢¸® Åë½ÅÀÌ ÀÌ·ç¾î Áö·Á¸é ÀÌ·¯ÇÑ ¼ø¼¸¦ ¸ÂÃç ÁÖ¾î¾ß ÇÑ´Ù. ³×Æ®¿÷ »ó¿¡¼ÀÇ µ¥ÀÌÅÍÀÇ byte order¸¦ Network byte order¶ó°í Çϸç, ÄÄÇ»ÅÍ ³»ºÎ¿¡¼ »ç¿ëµÇ´Â byte order¸¦ host byte order¶ó°í ÇÑ´Ù. ±×·¯¹Ç·Î sin_addr¿¡ µé¾î°¥ ¼ýÀÚ´Â network byte order ÀÌ´Ù. ¿ì¸®°¡ sin_port¿Í sin_addr¿¡ °ªÀ» ÁöÁ¤ÇÏ·Á¸é ÄÄÇ»ÅÍÀÇ host byte orderÀÎ º¯¼ö °ªÀ» network byte order ·Î ¹Ù²Ù¾î¼ ÀúÀåÇØ¾ß ÇÑ´Ù. ÀÌ·¯ÇÑ ¼ø¼ º¯È¯ ÇÔ¼ö´Â 4°¡Áö°¡ ÀÖ´Ù. htons()-"Host to Network Short" À̸§ ±×´ë·Î htons() ´Â short ÇüÀÇ º¯¼ö¸¦ host
byte order¿¡¼ network byteorder·Î ¹Ù²ãÁØ´Ù. ³ª¸ÓÁöµµ ¸¶Âù°¡ÁöÀÌ´Ù.
Address Conversion Routine IP ¾îµå·¹½ºÀÇ ÁöÁ¤À» À§Çؼ´Â sin_addr.s_addr¿¡ ÁÖ¼Ò¸¦ ÁöÁ¤ÇØ¾ß ÇÑ´Ù. sa¶ó´Â sockaddr-in ±¸Á¶Ã¼°¡ ÀÖ´Ù°í ÇÏÀÚ. ¿©±â¿¡ "127.0.0.1"¶ó´Â ÁÖ¼Ò¸¦ ÁöÁ¤ÇÏ°í ½ÍÀ» ¶§¿¡´Â ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù. sa.sin_addr.s_addr =inet_addr("127.0.0.1")
; printf("%s",inet_ntoa(sa.sin_addr)); socket() int socket(int family, int type, int protocol); sckfd =socket(AF_INET,SOCK_STREAM,0); bind() int bind(int sockfd, struct sockaddr *myaddr,
int addrlen); lsten() int listen(int sockfd, int baklog); Accept() int accept(int sockfd, struct sockaddr * peer,int
*addrlen); connect() int connect(int sockfd, struct sockaddr
*servaddr, int addrlen); socketÀ» ÅëÇÑ read/write ¼ÒÄÏÀº ÇϳªÀÇ ÆÄÀÏÀ̹ǷΠ¸ðµç ÆÄÀÏ I/O ÇÔ¼öµéÀ»
»ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿©±â¼ ¿ì¸®´Â read(), write() ½Ã½ºÅÛ È£ÃâÀ»
ÀÌ¿ëÇÏ°Ô µÉ °ÍÀÌ´Ù. 1. »ó´ë¹æÀÌ ´ÝÇôÁø ¼ÒÄÏ¿¡ read()¸¦ ½ÇÇàÇϸé
0À» ¸®ÅÏÇÑ´Ù. ÀÌ ½Ã±×³ÎÀÌ ¹«½ÃµÇ°Å³ª ÀÌ ½Ã±×³ÎÀ» À§ÇÑ ½Ã±×³Î
Çڵ鷯°¡ ¼³Ä¡µÇ¾úÀ» °æ¿ì¿¡´Â ¿¡·¯°¡ ¹ß»ýÇÏ°í(-1À» ¸®ÅÏ), errno°¡
EPIPE·Î ¼¼ÆõȴÙ. echo ¼¹ö ÇÁ·Î±×·¥ ÀÌ ¼¹ö ÇÁ·Î±×·¥Àº Æ÷Æ® 4000¹øÀ¸·ÎºÎÅÍ ¿¬°áÀ» ¹Þ¾Æµé¿©¼, µ¥ÀÌÅ͸¦ ÀÐ°í ±×°ÍÀ» µµ·Î ¹Ý¼ÛÇÏ´Â ÀÛ¾÷À» ¹Ýº¹ÇÑ´Ù. /*echo server*/ #define ECHO_PORT4000 int newsock: ÇÁ·Î±×·¥ÀÇ È帧Àº ¼ÒÄÏÀ» ¸¸µé°í, sock=socket(AF_INET,
SOCK_STREAM, 0); ÀÌÁ¦ ÀÌ ÇÁ·Î±×·¥À» Å×½ºÆ® Çغ¸ÀÚ. ÁÖ¼Òº¯È¯Çϱâ www.linux-kr.org°ú °°ÀÌ ¹®ÀÚ·Î ÀÌ·ç¾îÁø ÁÖ¼Ò´Â 127.0.0.1°ú °°ÀÌ ¼ýÀÚ·Î ÀÌ·ç¾îÁø ÁÖ¼Ò·Î º¯È¯µÇ¾î¼ 󸮵Ǿî¾ß ÇÑ´Ù. ÀÌ·¯ÇÑ ÀÛ¾÷Àº DNS(Domain Name Service)¿¡ ÀÇÇØ ½Ã½ºÅÛ¿¡¼ ÀÌ·ç¾îÁø´Ù. ÇÁ·Î±×·¥¿¡¼ À̸¦ ÀÌ¿ëÇϱâ À§Çؼ´Â gethostbyname() À̶ó´Â ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. #include <netdb.h> gethostbyname()Àº ¹®ÀÚ·Î ÀÌ·ç¾îÁø ÁÖ¼Ò¸¦ Àμö·Î ¹Þ¾Æ¼ hostent ±¸Á¶Ã¼¸¦ ¸®ÅÏÇÑ´Ù. ÀÌ ±¸Á¶Ã¼ÀÇ ÀÌ¿ë ¿¹¸¦ ÅëÇØ »ç¿ë¹ýÀ» »ìÆ캸ÀÚ. #include <stdio.h> int main(int argc, char *argv[]) return 0; ¿©±â¼ º¼ ¼ö ÀÖµíÀÌ h_nameÀº ¹®ÀÚ·Î ÀÌ·ç¾îÁø
È£½ºÆ®ÀÇ À̸§À», h_addrÀº in_addrÇö ±¸Á¶Ã¼¿¡ µé¾î°¥ Network
byte orderÀÎ ¼ýÀÚ¸¦ ÀúÀåÇÑ´Ù. h_addrÀº ½ÇÁ¦ÀûÀ¸·Ð h_Addr_list[0]ÀÇ
¸ÅÅ©·ÎÀÌ´Ù. ¿©±â¼ genthostbyname()¿¡ ¿¡·¯°¡ ¹ß»ýÇÏ¿© NULLÀ» ¹ÝȯÇÒ ¶§ perror()°¡ ¾Æ´Ñ herror()ÇÔ¼ö¸¦ »ç¿ëÇÏ¿´´Ù. ÀÌ´Â gethostbyname()Àº ¿¡·¯ ½Ã¿¡ errno°¡ ¾Æ´Ñ h_errno¿¡ ¿¡·¯¸¦ ¼¼ÆÃÇϹǷÎ, perror() ´ë½Å herror()ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ¿¡·¯ ³»¿ëÀ» È®ÀÎÇÑ´Ù. <ÁÖ¼Òº¯È¯ ¾Ë°í¸®Áò> echo Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥ Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥Àº ¼ÒÄÏ ¿¬°á ÈÄ fork()¸¦
½ÇÇà½ÃŲ´Ù. fork()°¡ ½ÇÇàµÇ¸é Àڽİú ºÎ¸ð´Â ÇϳªÀÇ ¼ÒÄÏÀ» µ¿½Ã¿¡
¿¾î ³õÀ» ¼ö ÀÖÀ¸¹Ç·Î, ÇϳªÀÇ ¼ÒÄÏ¿¡ Àбâ¿Í ¾²±â¸¦ µ¿½Ã¿¡ ¼öÇàÇÒ
¼ö ÀÖ´Ù. ÀÚ½Ä ÇÁ·Î¼¼¼´Â ¼¹ö·ÎºÎÅÍ µ¥ÀÌÅ͸¦ ÀÐ¾î¼ Ãâ·ÂÇÏ´Â
ÀÛ¾÷À» ¹Ýº¹ÇÑ´Ù. ºÎ¸ð ÇÁ·Î¼¼¼´Â Å͹̳ÎÀ» cbreak ¸ðµå·Î ÀüȯÇÑ
µÚ ÀÔ·ÂµÈ ¹®ÀÚ¸¦ °ð¹Ù·Î ¼¹ö¿¡ Àü¼ÛÇÏ´Â ÀÛ¾÷À» ¹Ýº¹ÇÑ´Ù. cbreak¸ðµå¿¡¼´Â
ÀÚ½ÅÀÌ Ä£ ¹®ÀÚ¸¦ ȸ鿡 Ç¥½ÃÇÏÁö ¾Ê°í, Çѹø¿¡ ÇÑ ¹®ÀÚ¾¿ Àоî
µéÀδÙ(echo off, noncanonical input). /* echo client*/ #define ECHO_PORT 4000 int tty_cbreak(int fd, int set); ÁÖ¼Ò¸¦ º¯È¯ÇÏ´Â °úÁ¤À» »ìÆ캸ÀÚ. If((serv_addr.sin_addr.s_addr=inet_addr(addr))!=INADDR_NONE) ¸¸¾à addrÀÌ "127.0.0.1"°ú °°ÀÌ ¼ýÀÚ·Î ÀÌ·ç¾îÁø ÁÖ¼Ò°ªÀ̶ó¸é inet_addr()ÇÔ¼ö´Â Á¤»óÀûÀ¸·Î ÀÛµ¿ÇÑ´Ù. ±×·¸Áö ¾ÊÀ» °æ¿ì´Â INADDR_NONE(-1)¶ó´Â °ªÀÌ ¸®ÅϵȴÙ. ¿¡·¯³ª ³µÀ¸¸é ¹®ÀÚ·Î ÀÌ·ç¾îÁø ÁÖ¼ÒÀÎÁö¸¦ üũÇÑ´Ù. else gethostbyname()ÇÔ¼ö°¡ ¼º°øÀ» ÇÏ¸é ¿ì¸®´Â host->h_addrÀ»
serv_addr.sin_addr¿¡ º¹»çÇÏ¿© serv_addr ±¸Á¶Ã¼¸¦ ¿Ï¼º½Ãų ¼ö
ÀÖ´Ù. HostnameÀº ¹®ÀÚ·Î ÀÌ·ç¾îÁø ÁÖ¼ÒÀÇ ¿ÏÀüÇÑ °ªÀ» °¡Áø´Ù.(¸ÅÅ©·Î
°°Àº À̸§ÀÌ ¾Æ´Ñ...) Àü¿µÁØ
<³×Æ®¿÷ ÇÁ·Î±×·¡¹ÖÀÇ ½ÃÀÛÀ» À§ÇÑ ¾È³»> ³×Æ®¿÷ ÇÁ·Î±×·¡¹ÖÀº ±âº»ÀûÀÎ À¯´Ð½º ÇÁ·Î±×·¡¹Ö
ÁÖÁ¦°¡ ¾Æ´Ï´Ù. À¯´Ð½º ½Ã½ºÅÛ ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ±âº»ÀûÀÎ Áö½ÄÀÌ
¾øÀÌ´Â ³×Æ®¿÷ ÇÁ·Î±×·¡¹ÖÀ» Á¦´ë·Î ¹è¿ö³ª°¡±â°¡ ¾î·Á¿ï °Í ÀÌ´Ù.
¼ö¸¹Àº ÆÄÀÏ ÄÜÆ®·Ñ ±â¹ýµéÀ» ´Ù·ç°Ô µÉ °ÍÀÌ°í, À¯´Ð½º ½Ã½ºÅÛÀÇ
³»ºÎÀûÀÎ µ¿ÀÛÀ» ±âº»Áö½ÄÀ¸·Î ÇÊ¿ä·Î ÇÒ °ÍÀÌ´Ù. ¾ÆÁ÷ À¯´Ð½º ½Ã½ºÅÛ
ÇÁ·Î±×·¡¹Ö¿¡ Àͼ÷Ä¡ ¾ÊÀº ºÐÀº À¯´Ð½º ½Ã½ºÅÛ ÇÁ·Î±×·¡¹Ö °ü·Ã
Àü¹® ¼ÀûÀ» Àϵ¶Çϱ⸦ ±ÇÇÑ´Ù. Stevens¾¾°¡ ÁöÀº Unix Network ProgrammingÀ̶õ
Ã¥Àº À¯´Ð½º ³×Æ®¿÷ ÇÁ·Î±×·¡¹ÖÀÇ ¹ÙÀ̺íÀ̶ó ÇÒ ¸¸ÇÑ Ã¥ÀÌ´Ù. Stevens¾¾´Â
ÀÌ Ã¥ ¿Ü¿¡µµ Advanced Programming in the UNIX Environment¶ó´Â
À¯¸íÇÑ Ã¥µµ Áö¾ú´Ù. ±×ÀÇ ÀÌ ³×Æ®¿÷ ¼ÀûÀº ³×Æ®¿÷ ÇÁ·Î±×·¡¹Ö¿¡
°ü·ÃµÈ °ÅÀÇ ¸ðµç °ÍÀÌ ¸Á¶óµÇ¾î ÀÖ¾î ÇʼöÀûÀ̶ó ÇÒ ¸¸ÇÑ Ã¥ÀÌÁö¸¸
Ãʺ¸ÀÚ°¡ È¥ÀÚ¼ Àб⿡´Â ´Ù¼Ò Èûµç Á¡ÀÌ ¸¹´Ù. Àá½Ã ÀÌ Ã¥¿¡ °üÇÑ ¾È³»¸¦ ÇÏ°Ú´Ù. ÀÌ Ã¥ÀÇ ¾ÕºÎºÐ¿¡´Â À¯´Ð½º ½Ã½ºÅÛ°ú ³×Æ®¿÷ÀÇ
±âº» Áö½ÄÀ¸·Î 250ÆäÀÌÁö¿¡ °ÉÃÄ ¸¹Àº ¼³¸íÀ» ÇØ ³õ¾Ò´Ù. ±×·¯³ª
ÀÌ ¼³¸íÀº "À¯´Ð½º ½Ã½ºÅÛ¿¡ Àͼ÷Ä¡ ¾ÊÀº »ç¶÷¿¡°Õ ´Ù¸¥ ÁÁÀº
Ã¥À» Àд °ÍÀÌ ´õ ³´°í, À¯´Ð½º ½Ã½ºÅÛ¿¡ Àͼ÷ÇÑ ÇÁ·Î±×·¡¸Ó´Â
ÀÌ ºÎºÐÀÌ ÇÊ¿ä°¡ ¾ø±â" ¶§¹®¿¡ ÀúÀÚ°¡ Ã¥ÀÇ ¿Ï°á¼ºÀ» ³ôÀ̱â
À§Çؼ ³ÖÀº ºÎºÐÀ̶ó°í »ý°¢ÇÏ¸é µÉ °ÍÀÌ´Ù. ´Ù¸¸ 4Àå°ú 5ÀåºÎºÐÀÇ
³×Æ®¿÷ ¹è°æÁö½Ä¿¡ ´ëÇؼ´Â °£´ÜÈ÷ ÈÈ¾î º¸´Â °Íµµ ÁÁÀ» °ÍÀÌ´Ù.
³×Æ®¿÷ ÇÁ·Î±×·¡¹ÖÀÇ ÇÙ½ÉÀº 6Àå°ú 8Àå¿¡ ¸ðµÎ
´Ù ÀÖ´Ù. 6Àå°ú 8Àå¿¡ ÀÖ´Â ºÎºÐ¸¸ ¸ðµÎ ÀÌÇظ¦ ÇÏ°í ÀÖ´Ù¸é ÀϹÝÀûÀÎ
¼ÒÄÏ ÇÁ·Î±×·¡¹Ö½Ã ÀüÇô ¾î·Á¿î Á¡ÀÌ ¾øÀ» °ÍÀÌ´Ù. À¯´Ð½º ½Ã½ºÅÛ°ú
³×Æ®¿÷¿¡ °üÇØ ±íÀº Áö½ÄÀ» ¾ò°íÀÚ ÇϽô ºÐÀº 14Àå ¶Ç´Â 15Àå¿¡
ÀÖ´Â ºÎºÐÀ» °øºÎÇÏ¸é »ó´çÇÑ µµ¿òÀÌ µÇ¸®¶ó »ý°¢µÈ´Ù. (ÀÌ Ã¥ÀÇ ÇѱÛÆÇÀ» ÀÐÀ¸¸é ¿ë¾î¿¡ ´ëÇÑ ½É°¢ÇÑ
È¥µ¿ÀÌ »ý±æ °ÍÀÌ´Ù. ¿µ¾î¿¡ ºÎ´ãÀÌ ¾øÀ¸½Å ºÐÀº ¿µ¾î·Î µÈ ¿ø¼¸¦
±¸ÀÔÇϱæ ÃßõÇÑ´Ù.) À¯´Ð½º ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö¿¡ °ü·Ã Àǹ®»çÇ×ÀÌ »ý±â¸é
¿ì¼± socket FAQ¸¦ »ìÆ캸±â ¹Ù¶õ´Ù. ¼ÒÄÏ ÇÁ·Î±×·¡¹ÖÀ» óÀ½ °øºÎÇϽôÂ
ºÐÀÌ °¡Áú ¼ö ÀÖ´Â ¸ðµç Áú¹®°ú ´äÀÌ ¿©±â¿¡ ÀûÇôÀÖ´Ù. ´ÙÀ½ÀÇ site¿¡¼
±¸ÇÒ ¼ö ÀÖ´Ù. ftp://rtfm.mit.edu/pub/usenet/news.answers/unix-faq/socket |