ÇöÀç°Á : UNIX BSD ¼ÒÄÏ ½Ã½ºÅÛ ÄÝ
ÀÌÀü: 3.2 ÅäÅ© Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥
3.2
ÅäÅ© ¼¹ö ÇÁ·Î±×·¥
- ¿©±â¼´Â 3.1Àý¿¡¼ ¼Ò°³ÇÑ
ÅäÅ© Ŭ¶óÀ̾ðÆ® talk_client.cÀÇ ¼¹ö ¿ªÇÒÀ»
ÇÏ´Â ÅäÅ© ¼¹ö ÇÁ·Î±×·¥ talk_server.c¸¦
¼Ò°³ÇÑ´Ù.
- talk_server.cÀÇ ¼ÒÄÏ »ý¼º ¹×
Ŭ¶óÀ̾ðÆ®¿ÍÀÇ ¿¬°á ÀýÂ÷´Â 2.4Àý¿¡¼
¼³¸íÇÑ ¹æ¹ý°ú µ¿ÀÏÇÏ´Ù.
- ÇÑÆí ¼¹ö¿¡¼µµ
Ŭ¶óÀ̾ðÆ®¿¡¼¿Í °°ÀÌ »ç¿ëÀÚ Å°º¸µå
ÀԷ°ú ¸Þ½ÃÁö ¼Û¼ö½Å µÎ °¡Áö ±â´ÉÀ»
µ¿½Ã¿¡ ¼öÇàÇϱâ À§ÇØ fork() ½Ã½ºÅÛ ÄÝÀ»
ÀÌ¿ëÇÑ´Ù.
3.2.1 ÇÁ·Î±×·¥ ÁÖ¿äºÎºÐ ¼³¸í
- ¼¹ö´Â listen()À» È£ÃâÇÏ¿©
¼ÒÄÏÀ» ¼öµ¿ ´ë±â¸ðµå·Î ¹Ù²Ù°í accpet()¸¦
È£ÃâÇÏ¿© Ŭ¶óÀ̾ðÆ®·ÎºÎÅÍÀÇ ¿¬°áÀ»
±â´Ù¸°´Ù.
- ¿¬°áÀÌ ÀÌ·ç¾îÁö¸é fork()
½Ã½ºÅÛ ÄÝÀ» ÀÌ¿ëÇÏ¿© ¼¹ö ÇÁ·Î±×·¥À»
º¹Á¦ÇÑ´Ù.
- ºÎ¸ð ÇÁ·Î¼¼½º´Â »ç¿ëÀÚÀÇ
Å°º¸µå ÀÔ·ÂÀ» ¹Þ¾Æ Ŭ¶óÀ̾ðÆ®¿¡°Ô
Àü¼ÛÇϸç, ÀÚ½Ä ÇÁ·Î¼¼½º´Â Ŭ¶óÀ̾ðÆ®°¡
º¸³»¿Â ¸Þ½ÃÁö¸¦ ȸ鿡 Ãâ·ÂÇÑ´Ù.
- ¼¹ö ÀÚ½ÅÀÇ IP ÁּҷδÂ
talk_server.c ÇÁ·Î±×·¥ÀÌ ÀÓÀÇÀÇ È£½ºÆ®¿¡¼
¼öÇàµÉ ¼ö ÀÖµµ·Ï INADDR_ANY·Î ÁöÁ¤ÇÏ¿´´Ù.
- talk_server.c°¡ »ç¿ëÇÒ
Æ÷Æ®¹øÈ£´Â ÇÁ·Î±×·¥ ½ÇÇà½Ã¿¡ ¸í·É¹®
ÀÎÀÚ·Î ÀÔ·ÂÇÑ °ª(argv[1])À» »ç¿ëÇÑ´Ù.
server_addr.sin_family
= AF_INET; server_addr.sin_addr.s_addr
= htonl(INADDR_ANY);
server_addr.sin_port =
htons(atoi(argv[1]));
|
- ÇÑÆí ¼¹ö´Â Ŭ¶óÀ̾ðÆ®°¡
¸Þ½ÃÁö 'exit'¸¦ Àü¼ÛÇØ ¿À¸é ÅäÅ© ¼ºñ½º¸¦
Áß´ÜÇÏ°í Ŭ¶óÀ̾ðÆ®¿ÍÀÇ ¿¬°áÀ» ²÷µµ·Ï
±¸ÇöÇÏ¿´´Ù.
¢º talk_server.c ÇÁ·Î±×·¥ ¸®½ºÆ®
ÇöÀç°ÁÂ :
UNIX BSD ¼ÒÄÏ ½Ã½ºÅÛ ÄÝ
ÀÌÀü: 3.2 ÅäÅ© Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥