ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù. 1 ¸ÖƼ ½º·¹µå ±â¼ú¿¡ ´ëÇÏ¿©
½º·¹µå¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº Thread ¹Ì´Ï »çÀÌÆ®¿¡ ÀÚ¼¼È÷ ±â¼ú µÇ¾î ÀÖ´Ù. ¿©±â¿¡¼´Â ¼ÒÄÏ ÇÁ·Î±×·¡¹ÖÀ» Áß½ÉÀ¸·Î ¸ÖƼ ½º·¹µå ±â¼úÀÌ °¡Áö´Â Ư¡À» ÁýÁßÀûÀ¸·Î »ìÆìº¸µµ·Ï ÇϰڴÙ.
¿î¿µÃ¼Á¦´Â ÇÁ·Î±×·¥ÀÇ ½ÇÇà À̹ÌÁöÀÎ ÇÁ·Î¼¼½º¸¦ ÃÖ¼Ò ½ÇÇà ´ÜÀ§·Î ÀÛµ¿ÇÑ´Ù. ´ÙÁß ÇÁ·Î¼¼½º ¿î¿µÃ¼Á¦´Â À̵é ÇÁ·Î¼¼½º¸¦ ½Ã ºÐÇÒ ¹æ½ÄÀ¸·Î ½ºÀ§Äª Çϸé¼, µ¿½Ã¿¡ ¿©·¯ °³ÀÇ ÇÁ·Î¼¼½º¸¦ ¿î¿ëÇÑ´Ù. (¾ö¹ÐÈ÷ µûÁöÀÚ¸é, µ¿½Ã°¡ ¾Æ´Ñ µ¿½ÃÀÎ °Í ó·³ ´À²¸Áö´Â °ÍÀÌÁö¸¸ ÀÌÇØÇϱ⠽±°Ô µ¿½Ã¶ó°í ÇϰڴÙ.)
ÀÌ ÇÁ·Î¼¼½º´Â ¿©·¯ °³ÀÇ ¹®¸ÆÀ¸·Î ÀÌ·ç¾îÁö´Âµ¥, ¾îÂ÷ÇÇ ´ÙÁß ÇÁ·Î¼¼½º ¿î¿µÃ¼Á¦°¡ ÇÁ·Î¼¼½º¸¦ ½ºÀ§Äª ÇÏ´Â °Å¶ó¸é ¹®¸ÆÀ» ½ºÀ§Äª ÇÒ ¼ö ÀÖÁö ¾ÊÀ»±î ? °£´ÜÈ÷ ¸»Çؼ ÄÚµå´ÜÀ§·Î ½ºÀ§Äª ÇÏ´Â °ÍÀÌ´Ù. ÀÌ·¸°Ô ½ºÀ§Äª °¡´ÉÇÑ ÇÁ·Î¼¼½ºÀÇ ¹®¸ÆÀ» ½º·¹µå¶ó°í ÇÑ´Ù. ÇÁ·Î¼¼½º´Â ÃÖ¼ÒÇÑ Çϳª ÀÌ»óÀÇ ½º·¹µå·Î ±¸¼ºµÇ¾î ÀÖ´Ù. ¸¸¾à µÎ °³ÀÇ ½º·¹µå·Î ±¸¼ºµÈ´Ù¸é, À̸¦ ¸ÖƼ ½º·¹µå ÇÁ·Î±×·¥À̶ó°í ÇÑ´Ù. 2 ¸ÖƼ ½º·¹µå ±â¹Ý ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö
¾Õ¼ ¸ÖƼ ÇÁ·Î¼¼½º ±â¹ÝÀÇ ¼ÒÄÏ ÇÁ·Î±×·¥¿¡¼ ¿©·¯ °³ÀÇ ÇÁ·Î¼¼½º¸¦ µ¿½Ã¿¡ ¿î¿ëÇÔÀ¸·Î½á, ´Ù¼öÀÇ Å¬¶óÀÌ¾ðÆ®¸¦ ó¸®ÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº¸¾Ò´Ù.
ÇÙ½ÉÀº ¼¹ö ÇÁ·Î±×·¥ÀÌ µè±â ¼ÒÄϰú ¿¬°á ¼ÒÄÏÀÌ ºÐ¸®µÇ¾î Àִµ¥, µè±â ¼ÒÄÏ¿¡ Ŭ¶óÀÌ¾ðÆ® ¿¬°áÀÌ µé¾î¿Í¼ ¿¬°á ¼ÒÄÏÀÌ ¸¸µé¾î Áö¸é, ¿¬°á ¼ÒÄÏÀ» »ó¼Ó ¹Þ´Â »õ·Î¿î ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ ¸¸µé¾î¼ Ŭ¶óÀÌ¾ðÆ® ¿äûÀ» ó¸®Çϴµ¥ ÀÖ´Ù.
¸ÖƼ ½º·¹µåµµ ÀÌ¿Í µ¿ÀÏÇÑ ¹æ½ÄÀ¸·Î ´Ù¼öÀÇ Å¬¶óÀÌ¾ðÆ®¸¦ ó¸®ÇÒ ¼ö ÀÖ´Ù. ÇÁ·Î¼¼½º ´ë½Å ½º·¹µå¸¦ ÀÌ¿ëÇÏ¸é µÈ´Ù. Áï µè±â ¼ÒÄÏÀ» ÅëÇØ¼ »õ·Î¿î Ŭ¶óÀÌ¾ðÆ®°¡ µé¾î¿À¸é fork ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ ¸¸µå´Â ´ë½Å¿¡, pthread_createÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ »õ·Î¿î ½º·¹µå¸¦ ¸¸µå´Â °ÍÀÌ´Ù. ÀÌ ½º·¹µå´Â ¹®¸ÆÀ» Æ÷ÇÔÇÑ ÄÚµå Á¶°¢À¸·Î µè±â ¼ÒÄÏÀÇ ¼ÒÄÏ ÁöÁ¤ ¹øÈ£¸¦ ¸Å°³ º¯¼ö·Î ¹Þ¾ÆµéÀÏ ¼ö ÀÖ´Ù. ÀÌ µè±â ¼ÒÄÏÀ» ÀÌ¿ëÇØ¼ Ŭ¶óÀÌ¾ðÆ®¸¦ ó¸®ÇÏ´Â ½ÄÀÌ´Ù.
¸ÖƼ ½º·¹µå ¹æ½ÄÀÇ ¼¹ö´Â ´ë°Ô ´ÙÀ½°ú °°Àº È帧À» °¡Áø´Ù. 2.1 ¸ÖƼ ½º·¹µå ±â¹Ý ¼¹ö ÇÁ·Î±×·¥ ¿¹Á¦
¿¡ÄÚ ¼ºñ½º¸¦ ¸ÖƼ ½º·¹µå ±â¹ÝÀ¸·Î ¸¸µé¾î º¸¾Ò´Ù. 001 #include <sys/socket.h> 002 #include <sys/stat.h> 003 #include <arpa/inet.h> 004 #include <stdio.h> 005 #include <string.h> 006 #include <pthread.h> 007 008 #define MAXLINE 1024 009 010 void *myFunc(void *arg); 011 012 int main(int argc, char **argv) 013 { 014 int listenfd, sockfd; 015 struct sockaddr_in sockaddr; 016 017 int socklen; 018 int th_id; 019 020 pthread_t thread_t; 021 022 if(argc != 2) 023 { 024 printf("Usage : %s [port]\n", argv[0]); 025 } 026 027 if((listenfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) 028 { 029 perror("socket error"); 030 return 1; 031 } 032 033 memset((void *)&sockaddr,0x00,sizeof(sockaddr)); 034 sockaddr.sin_family = AF_INET; 035 sockaddr.sin_addr.s_addr = htonl(INADDR_ANY); 036 sockaddr.sin_port = htons(atoi(argv[1])); 037 038 if( bind(listenfd, (struct sockaddr *)&sockaddr, sizeof(sockaddr)) == -1) 039 { 040 perror("bind error"); 041 return 1; 042 } 043 044 if(listen(listenfd, 5) == -1) 045 { 046 perror("listen error"); 047 return 1; 048 } 049 050 while(1) 051 { 052 sockfd = accept(listenfd, (struct sockaddr *)&sockaddr, &socklen); 053 if(sockfd == -1) 054 { 055 perror("accept error"); 056 return 1; 057 } 058 th_id = pthread_create(&thread_t, NULL, myFunc, (void *)&sockfd); 059 if(th_id != 0) 060 { 061 perror("Thread Create Error"); 062 return 1; 063 } 064 pthread_detach(thread_t); 065 } 066 } 067 068 void *myFunc(void *arg) 069 { 070 int sockfd; 071 int readn, writen; 072 char buf[MAXLINE]; 073 sockfd = *((int *)arg); 074 075 while(1) 076 { 077 readn = read(sockfd, buf, MAXLINE); 078 if(readn <= 0) 079 { 080 perror("Read Error"); 081 return NULL; 082 } 083 writen = write(sockfd, buf, readn); 084 if(readn != writen) 085 { 086 printf("write error %d : %d\n", readn, writen); 087 return NULL; 088 } 089 } 090 } 091
1 - 57 socket -> bind -> listen -> acceptÀÇ ÀϹÝÀûÀÎ °úÁ¤À» °ÅÄ£´Ù.
Å×½ºÆ®´Â echo Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥À» ÀÌ¿ëÇß´Ù.58 - 63 accept ÇÔ¼ö·Î ¿¬°á ¼ÒÄÏÀ» °¡Á®¿À¸é, Ŭ¶óÀÌ¾ðÆ®¿ÍÀÇ Åë½ÅÀ» ó¸®ÇÒ ½º·¹µå ÇÔ¼ö myFunc¸¦ È£ÃâÇÑ´Ù. ¿¬°á ¼ÒÄÏÀ» ½º·¹µå ÇÔ¼öÀÇ ¸Å°³ º¯¼ö·Î ³Ñ±ä´Ù. 64 ¿öÄ¿ ½º·¹µå¸¦ ±â´Ù¸± Çʿ䰡 ¾øÀ¸¹Ç·Î detach ½ÃÄ×´Ù. 2.2 ¸ÖƼ ½º·¹µå ±â¹Ý ¼ÒÄÏ ÇÁ·Î±×·¥ÀÇ ÀåÁ¡°ú ´ÜÁ¡
½º·¹µå´Â ÄÚµå Á¶°¢À̹ǷΠÇÁ·Î¼¼½º¸¦ º¹»çÇÏ´Â ¸ÖƼ ÇÁ·Î¼¼½º ¹æ½Ä º¸´Ù Á» ´õ ÀÛ°í ºü¸£°Ô ÀÛµ¿ÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µé ¼ö ÀÖ´Ù. ¹Ý¸é µ¶¸³µÈ ÇÁ·Î¼¼½º ´ÜÀ§·Î ±¸µ¿µÇÁö ¾Ê±â ¶§¹®¿¡, µð¹ö±ëÀÌ Èûµé´Ù´Â ´ÜÁ¡ÀÌ ÀÖ´Ù. ¶ÇÇÑ ÇϳªÀÇ ½º·¹µå¿¡ »ý±ä ¹®Á¦°¡ Àüü ÇÁ·Î¼¼½º¿¡ ¹®Á¦¸¦ ÁÙ ¼ö ÀÖ´Ù´Â ¹®Á¦Á¡µµ ÀÖ´Ù.
|
|
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|