ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù. ÇöÀç ³×Æ®¿öÅ©´Â internet(ÀÎÅͳÝ)À¸·Î ´ëº¯µÈ´Ù. ¶§¹®¿¡ ³×Æ®¿öÅ© ´ë½Å ÀÎÅͳÝÀ̶ó´Â ¿ë¾î¸¦ »ç¿ëÇϵµ·Ï ÇϰڴÙ. 1 ÀÎÅÍ³Ý ÇÁ·Î±×·¥
ÀÎÅÍ³Ý ÇÁ·Î±×·¥Àº ÀÎÅͳݻ󿡼 ¸Ö¸® ¶³¾îÁø ÇÁ·Î±×·¥ »çÀÌ¿¡¼ Åë½ÅÀ» ¼öÇàÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù. ÀÎÅÍ³Ý ÇÁ·Î±×·¥À» ÀÌ¿ëÇØ¼ ¿ì¸®´Â À¥ÆäÀÌÁö¸¦ ¼ÇÎÇÏ°í ¿Â¶óÀÎ °ÔÀÓÀ» Çϸç Áֽİŷ¡¸¦ ÇÏ°í ¹°°ÇÀ» ±¸ÀÔÇÑ´Ù. À̸ÞÀÏÀ» ÁÖ°í ¹ÞÀ» ¼ö ÀÖÀ¸¸ç, ½Ç½Ã°£À¸·Î ´ëȸ¦ ³ª´ ¼öµµ ÀÖ´Ù. ÀÌ ¸ðµç °ÍÀÌ ÀÎÅÍ³Ý ÇÁ·Î±×·¥ÀÌ ÀÖÀ½À¸·Î °¡´ÉÇØÁø´Ù. 2 ¼¹ö Ŭ¶óÀÌ¾ðÆ® ¸ðµ¨
ÀÎÅÍ³Ý ÇÁ·Î±×·¥Àº ¿Â¶óÀÎ »ó¿¡¼ Á¤º¸¸¦ ¼ºñ½ºÇÑ´Ù. ÀÌ °úÁ¤Àº ¿ÀÇÁ¶óÀÎ Áï ¸ÅÀå¿¡¼ »óǰÀ» ¼ºñ½ºÇÏ´Â °Í°ú ¿ÏÀüÈ÷ µ¿ÀÏÇÏ´Ù. ´Ù¸¸ ¾Æ·¡¿Í °°Àº Á¡¿¡¼ ±âÁ¸ÀÇ »óǰ ¼ºñ½º¿Í Â÷À̸¦ º¸ÀδÙ.
¼¹ö/Ŭ¶óÀÌ¾ðÆ® ¸ðµ¨ÀÇ °¡Àå Å« ÀåÁ¡Àº °ü¸®°¡ ½±´Ù´Âµ¥ ÀÖ´Ù. ÇϳªÀÇ °ü¹®¸¸ Á¸ÀçÇϱ⠶§¹®¿¡ »óǰ°ú °í°´ÀÇ µé°í ³²À» Á÷Á¢ Á¦¾îÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ½Ã½ºÅÛÀ» ±¸ÃàÇϱ⵵ ¸Å¿ì ½±´Ù. â°í¸¦ Çϳª ¸¸µé°í °Å±â¿¡ »óǰÀ» Áø¿ÇÑ µÚ, °í°´À» ¸ÂÀÌÇÏ¸é µÈ´Ù. ÀϹÝÀûÀ¸·Î À̵é â°í´Â ÇϳªÀÇ ¹®À» °¡Áöµµ·Ï ÇÑ´Ù. °¡Àå ¼º°øÀûÀÎ ¸ðµ¨ÀÌ µÈµ¥¿¡´Â ÀÌ·± ÀåÁ¡ÀÌ Å« ¿ªÇÒÀ» Çß´Ù. 2.1 ³×Æ®¿öÅ© ¼¹ö Ŭ¶óÀÌ¾ðÆ® ¸ðµ¨
¿ÀÇÁ¶óÀÎÀÇ ¼¹ö/Ŭ¶óÀÌ¾ðÆ® ¸ðµ¨Àº ÀÎÅͳÝÀ¸·Îµµ ±×´ë·Î È®ÀåµÇ¾ú´Ù. Ãʱâ ÀÎÅͳÝÀÌ Çб¸ÀûÀÎ ¸ñÀû¿¡¼ »ó¾÷ÀûÀÎ ¸ñÀûÀ¸·Î »ç¿ëÇϱ⠽ÃÀÛÇϸé¼, ÀÏÂ÷ÀûÀ¸·Î ¹ßÀ» µé¿©³õÀº ±â¾÷µéÀÌ °ËÁõµÈµ¥´Ù ¸¹Àº °æÇèÀÌ ÃàÀûµÈ ¸ðµ¨À» ±×´ë·Î °¡Á®´Ù ¾²±æ ¿øÇ߱⠶§¹®ÀÌ´Ù.
ÀÌ·¸°Ô ÇØ¼ ³×Æ®¿öÅ© ¼¹ö Ŭ¶óÀÌ¾ðÆ® ¸ðµ¨ÀÌ ¸¸µé¾î Áø´Ù. ÀÌ ¸ðµ¨Àº ¼¹ö°¡ °í°´À» ¸ÂÀÌÇÏ´Â ±¸Á¶¸¦ °¡Áø´Ù. ¼¹ö´Â Á¤º¸Ã³¸®¿Í Á¤º¸ â°íÀÇ ¿ªÇÒÀ» Çϸç, Ŭ¶óÀÌ¾ðÆ®°¡ Á¤º¸¸¦ ¿äûÇÒ °æ¿ì À̸¦ ¼ºñ½ºÇÑ´Ù.
ÇϳªÀÇ ¼¹ö´Â ´Ù¼öÀÇ Å¬¶óÀ̾ðÆ®ÀÇ ¿äûÀ» ó¸®ÇÒ ¼ö ÀÖ´Ù. Áï 1:nÀÇ °ü°è¸¦ °¡Áø´Ù.
¼¹ö´Â ÀÎÅͳÝÀÇ ÇÙ½É ±Ç·Â¿ä¼ÒÀÎ Á¤º¸¸¦ µ¶Á¡ÀûÀ¸·Î ó¸®ÇØ¾ß Çϱ⠶§¹®¿¡, ÀϹÝÀûÀ¸·Î °·ÂÇÑ ÄÄÇ»ÆÃ ÆÄ¿ö¿Í °Å´ëÇÑ ÀúÀå°ø°£À» ÇÊ¿ä·Î ÇÑ´Ù.
¿ÀÇÁ¶óÀο¡¼ÀÇ ¼¹ö/Ŭ¶óÀÌ¾ðÆ® ¸ðµ¨°ú ¸¶Âù°¡Áö·Î, ¿Â¶óÀο¡¼µµ ¼¹ö/Ŭ¶óÀÌ¾ðÆ® ¸ðµ¨Àº ºñ±³Àû ±¸ÇöÀÌ ¿ëÀÌÇϱ⠶§¹®¿¡ ¸¹Àº ±â¾÷µéÀÌ ¼¹ö/Ŭ¶óÀÌ¾ðÆ® ¸ðµ¨¿¡ ±â¹ÝÇÑ ÇÁ·Î±×·¥À» ¸¸µé¾î¼ Á¤º¸ ¼ºñ½º¸¦ ÇÑ´Ù. ±¸ÃàÀÌ ¿ëÀÌÇÏ´Ù´Â Á¡ ¿Ü¿¡, Á¤º¸¸¦ µ¶Á¡ÀûÀ¸·Î ÅëÁ¦ÇÒ ¼ö ÀÖ´Ù´Â Á¡ÀÌ ¼¹ö/Ŭ¶óÀÌ¾ðÆ® ¸ðµ¨À» ¼±ÅÃÇϵµ·Ï ÇÏ´Â ÁÖ¿äÇÑ ÀÌÀ¯°¡ µÈ´Ù.
À̿ܿ¡µµ Agent/Manager, Peer to Peer (P2P)¿Í °°Àº ¸ðµ¨ÀÌ Àִµ¥, ¿©±â¿¡¼´Â ¼¹ö/Ŭ¶óÀÌ¾ðÆ® ¸ðµ¨À» Áß½ÉÀ¸·Î ¼³¸íÇϵµ·Ï ÇϰڴÙ. ±×¸¸Å ´ëÁßÀûÀÎ ¸ðµ¨À̱⠶§¹®ÀÌ´Ù. 3 ¼ÒÄÏ3.1 ¼ÒÄÏÀ̶õ
ÀÎÅͳݿ¡¼ Á¤º¸¸¦ ÁÖ°í ¹Þ´Â °ÍÀº ¸Å¿ì º¹ÀâÇÑ ¸ÅÄ¿´ÏÁò¿¡ ±â¹ÝÇÑ´Ù. À̸¦ ´Ü¼øÈ Çϱâ À§Çؼ OSI7°èÃþÀ» ¸¸µé°í, ´Ù½Ã À̸¦ ´Ü¼øÈ ÇØ¼ TCP/IP4 °èÃþÀ» ¸¸µé¾î¼ ÀÎÅÍ³Ý ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß¿¡ Ȱ¿ëÇϰí ÀÖ´Ù. ÇÏÁö¸¸ ÀÌ ¸¶Àúµµ º¹ÀâÇÏ´Ù. ±×·¡¼ ¸¸µç°Ô ¼ÒÄÏÀÌ´Ù. ¼ÒÄÏÀº ¸î °³ÀÇ °£´ÜÇÑ ÇÔ¼ö¸¸À¸·Îµµ ÀÎÅÍ³Ý ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸¸µé ¼ö ÀÖµµ·Ï µµ¿ÍÁÖ´Â ÇÔ¼ö ¸ðÀ½ÀÌ´Ù. ÇöÀç ¼ÒÄÏ ÇÔ¼ö ±¸ÇöÀº BSD ¼ÒÄÏÀÌ ÁÖ·Î »ç¿ëµÇ°í ÀÖ´Ù.
¼ÒÄÏÀº ÀÎÅÍ³Ý ¿¬°á,Á¾·á,µ¥ÀÌÅÍ Àü¼Û,µµ¸ÞÀÎ À̸§ º¯È¯,ÁÖ¼Ò º¯È¯µî°ú °ü·ÃµÈ ÁÖ¿ä ÇÔ¼öµéÀ» Á¦°øÇÑ´Ù. ¼ÒÄÏ¿¡¼ Á¦°øÇÏ´Â ÇÔ¼ö ¸ñ·ÏÀº ¼ÒÄÏ API ·¹ÆÛ·±½º¹®¼¸¦ Âü°íÇϱ⠹ٶõ´Ù. 3.2 ¼ÒÇÁÆ®¿þ¾î¿Í ¼ÒÇÁÆ®¿þ¾î¸¦ ¿¬°áÇÏ´Â ¼ÒÄÏ
ÈçÈ÷ ÀÌÇØÇϱ⠽±°Ô ÄÄÇ»ÅÍ¿Í ÄÄÇ»ÅÍÀÇ ³×Æ®¿öÅ©¸¦ ÀÎÅͳÝÀ̶ó°í ÇÏÁö¸¸, ÀÌÂü¿¡ ¸íÈ®È÷ ÇÏ°í ³Ñ¾î°¥ Çʿ䰡 ÀÖÀ» °Í °°´Ù. ÀÎÅͳÝÀº ¼ÒÇÁÆ®¿þ¾î¿Í ¼ÒÇÁÆ®¿þ¾îÀÇ ³×Æ®¿öÅ©´Ù. ¼ÒÇÁÆ®¿þ¾îÀÇ ³×Æ®¿öÅ© À̹ǷΠ´Ù¾çÇÑ Á¾·ùÀÇ ÀÎÅÍ³Ý ¼ºñ½º°¡ °¡´ÉÇÏ´Ù. ±×·¯ÇÑ ¼ºñ½ºÀÇ ¼ÒÇÁÆ®¿þ¾î¸¦ °³¹ßÇÏ¸é µÇ±â ¶§¹®ÀÌ´Ù.
¼ÒÄÏÀº ¿î¿µÃ¼Á¦¿¡¼ °ü¸®ÇÏ´Â °´Ã¼·Î ¼ÒÇÁÆ®¿þ¾î¸¦ ÀÎÅͳݿ¡ ¿¬°áÇØÁÖ´Â Á¢Á¡¿ªÇÒÀ» ÇÑ´Ù. ÀÎÅͳݰúÀÇ Á¢Á¡¿¡ ³õ¿©¼ ÀÎÅͳÝÀ¸·Î µ¥ÀÌÅ͸¦ Àü¼ÛÇϰųª ¶Ç´Â ÀÎÅͳÝÀ¸·Î ºÎÅÍ Àü¼ÛµÇ´Â µ¥ÀÌÅ͸¦ Àд °ÍÀÌ´Ù. ¼ÒÄÏ API¶ó°í ÇÏ´Â °ÍÀº ÀÌ ¼ÒÄÏ °´Ã¼¸¦ Á¦¾îÇÏ´Â ÇÔ¼öµéÀÇ ¸ðÀ½ÀÌ´Ù. ¼ÒÄÏ(socket)À̶ó´Â À̸§ÀÌ ºÙ¿©Áø °ÍÀº ÀÎÅͳݰú ¿¬°áµÇ´Â ±× ¸ð½ÀÀÌ (°¡Àü Á¦Ç°°ú Àü¿øÀ» ¿¬°á½ÃÄÑÁÖ´Â)¼ÒÄϰú ºñ½ÁÇϱ⠶§¹®¿¡ ºÙ¿©Á³´Ù. 3.3 ¼ÒÇÁÆ®¿þ¾î ¿¬°á¿¡ ÇÊ¿äÇÑ °Íµé
ÀÎÅͳݿ¡ ¹¿©ÀÖ´Â ÄÄÇ»Å͸¦ ã±â À§Çؼ´Â IP(ÀÎÅÍ³Ý ÁÖ¼Ò)°¡ ÇÊ¿äÇÏ´Ù. ÇÏÁö¸¸ ¼ÒÄÏ ÇÁ·Î±×·¡¹ÖÀº ¼ÒÇÁÆ®¿þ¾î¿Í ¼ÒÇÁÆ®¿þ¾î¸¦ ¿¬°áÇÏ´Â °ÍÀÓÀ¸·Î, ¼ÒÇÁÆ®¿þ¾îÀÇ À§Ä¡¸¦ ãÀ» ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ¼ÒÇÁÆ®¿þ¾îÀÇ À§Ä¡´Â PORT ¹øÈ£·Î ãÀ» ¼ö ÀÖ´Ù. Áï IP¿Í PORT ¹øÈ£°¡ ÀÖÀ¸¸é Àüü ÀÎÅͳݻ󿡼 À¯ÀÏÇÑ ¼ÒÇÁÆ®¿þ¾î¸¦ ã¾Æ¼ ¿¬°áÇÒ ¼ö ÀÖ´Ù. 4 ¼ÒÄÏ ³×Æ®¿öÅ© ÇÁ·Î±×·¡¹Ö
¼ÒÄÏ ³×Æ®¿öÅ© ÇÁ·Î±×·¡¹ÖÀ̶õ ¼ÒÄÏ ÇÔ¼ö¸¦ ÀÌ¿ë, ¼ÒÄÏ °´Ã¼¸¦ ¸¸µé¾î¼ ÀÎÅͳÝÀ» °¡·Î Áú·¯¼ Á¤º¸¸¦ ±³È¯ÇÒ ¼ö ÀÖ´Â ¼ÒÇÁÆ®¿þ¾î¸¦ ¸¸µå´Â ÇÁ·Î±×·¡¹Ö ±â¼úÀ» ¸»ÇÑ´Ù.
¼¹ö/Ŭ¶óÀÌ¾ðÆ® ¸ðµ¨¿¡¼ ÇÁ·Î±×·¥Àº ½ÖÀ¸·Î °³¹ßµÈ´Ù. ÀÎÅÍ³Ý ¼ºñ½º¸¦ Á¦°øÇÏ´Â ¼¹ö ÇÁ·Î±×·¥°ú ¼ºñ½º¸¦ ¿äûÇϱâ À§ÇØ °í°´¿¡°Ô Á¦°øµÇ´Â Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ÀÌ´Ù. 4.1 ¾ÖÇø®ÄÉÀÌ¼Ç ÇÁ·ÎÅäÄÝ ¼³°è
³×Æ®¿öÅ© ÇÁ·Î±×·¥Àº ´ëÈ-Åë½ÅÀ¸·Î Á¤º¸¸¦ ±³È¯ÇÑ´Ù. ±×·¯¹Ç·Î ¼¹ö¿Í Ŭ¶óÀÌ¾ðÆ®°£ ¿øÇÒÇÑ ´ëȸ¦ À§Çؼ´Â »ç¿ëÇÏ´Â ¾ð¾îÀÇ ¹®¹ýÀ» ¸ÂÃß¾î¾ß ÇÑ´Ù. À̸¦ ¾ÖÇø®ÄÉÀÌ¼Ç ÇÁ·ÎÅäÄÝ À̶ó°í ÇÑ´Ù. ÇÁ¸®Á¨Å×ÀÌ¼Ç °èÃþ¿¡¼ »ç¿ëÇϱ⠶§¹®¿¡, ÇÁ¸®Á¨Å×ÀÌ¼Ç ÇÁ·ÎÅäÄÝÀ̶ó°í ºÎ¸£±âµµ ÇÑ´Ù. HTTP, IRC, FTP ÇÁ·ÎÅäÄÝÀÌ ´ëÇ¥ÀûÀÎ ¾ÖÇø®ÄÉÀÌ¼Ç ÇÁ·ÎÅäÄÝÀÌ´Ù.
³×Æ®¿öÅ© ÇÁ·Î±×·¥À» °³¹ßÇÒ °æ¿ì °¡Àå ¸ÕÀú °í¹ÎÇÏ´Â °ÍÀº, Àü¼Û °èÃþ¿¡¼ ¾î¶² ÇÁ·ÎÅäÄÝ (Áï UDP, TCP)¸¦ »ç¿ëÇÒ °ÍÀÎÁö¿Í ¾ÖÇø®ÄÉÀÌ¼Ç ÇÁ·ÎÅäÄÝ ¼³°è¿¡ ´ëÇÑ °ÍÀÌ´Ù. ÃÖ±Ù¿¡´Â ¼º´Éº¸´Ù´Â À¯¿¬¼º°ú Àû¿ë¼º, ÀçȰ¿ë¼ºµîÀÌ Á߽õǴ Ãß¼¼¶ó¼ XML±â¹ÝÀ¸·Î ÇÁ·ÎÅäÄÝÀ» Á¦ÀÛÇÏ´Â °æ¿ì°¡ ¸¹´Ù. 5 ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö È帧
¼ÒÄÏ ÇÁ·Î±×·¥Àº ¼¹ö¿Í Ŭ¶óÀÌ¾ðÆ®·Î ³ª´µ¹Ç·Î °¢°¢ È帧À» »ìÆìº¼ Çʿ䰡 ÀÖ´Ù. 5.1 ¼¹ö ÇÁ·Î±×·¥ÀÇ È帧
ÀÎÅÍ³Ý ÇÁ·Î±×·¥Àº µ¥ÀÌÅÍ Åë½ÅÀ» À§ÇÑ ÇÁ·Î±×·¥ÀÌ´Ù. ±×·¯¹Ç·Î Åë½ÅÀÇ °üÁ¡¿¡¼ º¸¸é È帧À» Á»´õ ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖ´Ù.
5.1.1 ¼ÒÄÏ ¸¸µé±â
¼ÒÄÏÀº socket ÇÔ¼ö·Î ¸¸µç´Ù. ÀÌ·¸°Ô ¸¸µç ¼ÒÄÏÀº ÀÎÅͳݰú ¼ÒÇÁÆ®¿þ¾î¸¦ ¿¬°áÇÏ´Â Á¢Á¡À¸·Î½áÀÇ ¿ªÇÒÀ»ÇÑ´Ù. Á¢Á¡ ¿ªÇÒÀ» Çϱ⠶§¹®¿¡ endpoint socketÀ̶ó°í ºÎ¸£±âµµ ÇÑ´Ù.
´ÙÀ½Àº socket ÇÔ¼öÀÇ ¿øÇüÀÌ´Ù. #include <sys/types.h> #include <sys/socket.h> int socket(int domain, int type, int protocol);
5.1.2 ÇÁ·Î¼¼½º¸¦ ¼ÒÄÏ¿¡ ¹ÙÀεù Çϱâ
socket ÇÔ¼ö·Î ¸¸µé¾îÁø ¼ÒÄÏÀº Ä¿³Î¿¡ Á¸ÀçÇϱä ÇÏÁö¸¸, ¾ÆÁ÷ ÇÁ·Î¼¼½º¿Í ¿¬°áµÇÁö ¾Ê¾Ò´Ù. bind ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ¼ÒÄÏ¿¡ ¿¬°áÇÒ ¼ö ÀÖ´Ù. À̸¦ ¹ÙÀεùÇÑ´Ù°í ¸»ÇÑ´Ù. ¹ÙÀεùµÈ ÇÁ·Î¼¼½º´Â ÀÎÅÍ³Ý °Ç³Ê¿¡ ÀÖ´Â ÇÁ·Î¼¼½º°¡ ãÀ» ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ÄÄÇ»ÅÍÀÇ À§Ä¡´Â IP ÁּҷΠãÀ» ¼ö ÀÖÀ¸¸ç, ÄÄÇ»ÅÍ¿¡¼ ¼ÒÇÁÆ®¿þ¾î´Â Æ÷Æ® ¹øÈ£·Î ãÀ» ¼ö ÀÖ´Ù.
Áï bind´Â ÇÁ·Î¼¼½º¸¦ ÀÎÅͳݿ¡¼ À¯ÀÏÇÑ °³Ã¼·Î ÀνĽÃ۱â À§Çؼ IP ÁÖ¼Ò¿Í Æ÷Æ®¹øÈ£¸¦ ÇÒ´çÇÏ´Â ÀÏÀ» ÇÑ´Ù. #include <sys/types.h> #include <sys/socket.h> int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);
´ÙÀ½Àº »ç¿ë ¹æ¹ýÀÌ´Ù. struct sockaddr_in sock_addr; sock_addr.sin_family = AF_INET; sock_addr.sin_addr.s_addr = htonl(INADDR_ANY); sock_addr.sin_port = htons(12345);
bind ÇÔ¼ö´Â ÀϹÝÀûÀ¸·Î ¼¹ö¿¡¼ »ç¿ëÇÑ´Ù. INADDR_ANY´Â 0.0.0.0À» ÀǹÌÇÑ´Ù. ¸ðµç ÀÎÅÍ³Ý ÁÖ¼Ò·Î ºÎÅÍ ±â´Ù¸®°Ú´Ù´Â Àǹ̴Ù. ÀÌ ÇÁ·Î¼¼½º´Â 12345 Æ÷Æ®°¡ ÇÒ´çµÇ¾ú´Ù. 5.1.3 ¿¬°á ´ë±â¿ ¸¸µé±â
ÀÌÁ¦ Ŭ¶óÀÌ¾ðÆ®´Â ¼¹ö¿¡ ¿¬°áÇÒ ¼ö ÀÖ´Â »óŰ¡ µÇ¾ú´Ù. Ŭ¶óÀÌ¾ðÆ®°¡ ¼¹ö¿¡ ¿¬°á ¿äûÀ» Çϸé, ÀÌ ¿¬°á ¿äûÀº ¸ÕÀú ¿¬°á ´ë±â¿¿¡ µé¾î°£´Ù. ÇÁ·Î¼¼½º´Â ÀÌ ¿¬°á ´ë±â¿¿¡ ÀÖ´Â ¿äû Áß °¡Àå ¾Õ¿¡ ÀÖ´Â ¿äûÀ» ²¨³»¿Í¼ Ŭ¶óÀÌ¾ðÆ®¿ÍÀÇ Åë½ÅÀ» À§ÇÑ ¿¬°á ¼ÒÄÏÀ» ¸¸µç´Ù.
¿¬°á ´ë±â¿Àº ¹öÆÛÀÇ ¿ªÇÒÀ» ÇÑ´Ù. Áï ¼¹ö°¡ ¾ÆÁ÷ Ŭ¶óÀ̾ðÆ®ÀÇ ¿äûÀ» ¹Þ¾ÆµéÀÏ Áغñ°¡ µÇ¾î ÀÖÁö ¾Ê´õ¶óµµ, Ŭ¶óÀÌ¾ðÆ®¸¦ °ÅºÎÇÏÁö ¾Ê°í, Àá½Ã ±â´Ù¸®µµ·Ï ÇÑ´Ù.
listen ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ¿¬°á ´ë±â¿À» ¸¸µé ¼ö ÀÖ´Ù. #include <sys/socket.h> int listen(int s, int backlog);
5.1.4 ¿¬°á ´ë±â¿ °¡Á®¿À±â
¿¬°á ´ë±â¿¿¡ Àִ Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°á ¿äûÀº acceptÇÔ¼ö·Î °¡Á®¿Â´Ù. ![]() #include <sys/types.h> #include <sys/socket.h> int accept(int s, struct sockaddr *addr, socklen_t *addrlen);
¼¹ö´Â ¿¬°á ´ë±â¿¿¡ Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°áÀ» ±â´Ù¸®´Â µè±â ¼ÒÄϰú Ŭ¶óÀÌ¾ðÆ®¿Í ½ÇÁ¦ ¿¬°áµÈ ¿¬°á ¼ÒÄÏÀÌ ºÐ¸® µÈ´Ù´Â Á¡¿¡ ÁÖ¸ñÇÑ´Ù. 5.1.5 µ¥ÀÌÅÍ Åë½Å
accept ÇÔ¼ö È£Ãâ·Î ¸¸µé¾îÁø ¿¬°á ¼ÒÄÏÀ» ÀÌ¿ëÇØ¼ Ŭ¶óÀÌ¾ðÆ®¿Í Åë½ÅÀ» ÇÑ´Ù.
¸®´ª½º ¼ÒÄÏÀº ÆÄÀϰú µ¿ÀÏÇÏ°Ô ´Ù·ç¾îÁüÀ¸·Î read, writeÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ Åë½ÅÇÒ ¼ö ÀÖ´Ù. ȤÀº BSD ¼ÒÄÏ ÇÔ¼öÀÎ recv¿Í sendÇÔ¼ö·Î Åë½ÅÇÒ ¼öµµ ÀÖ´Ù. 5.2 Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ÀÇ È帧
Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥Àº ¼¹ö ÇÁ·Î±×·¥¿¡ ºñÇØ¼ ¸Å¿ì ´Ü¼øÇÏ´Ù. ¼¹ö´Â ¿©·¯ Ŭ¶óÀÌ¾ðÆ®¸¦ ¹Þ¾Æµé¿©¾ß Çϴ Ư¼º»ó ¿¬°á ´ë±â¿À» ¸¸µé°í, ¿¬°á ´ë±â¿¿¡ Àִ Ŭ¶óÀÌ¾ðÆ® ¿äûÀ» °¡Á®¿À´Â µîÀÇ ÀÛ¾÷ÀÌ ÇÊ¿äÇÏÁö¸¸, Ŭ¶óÀÌ¾ðÆ®´Â ±×³É ÇϳªÀÇ ¼ÒÄÏÀ» ¸¸µé°í À̰ÍÀ» ÀÌ¿ëÇØ¼ ¹Ù·Î ¼¹ö¿¡ ¿¬°á ¿äûÀ» ÇÏ¸é µÇ±â ¶§¹®ÀÌ´Ù. 5.2.1 ¼ÒÄÏ ¸¸µé±â
¼¹ö¿Í ¸¶Âù°¡Áö·Î socket ÇÔ¼ö·Î ¸¸µç´Ù. ¸¸µå´Â ¹æ¹ýÀº ¿ÏÀüÈ÷ µ¿ÀÏÇÏ´Ù. ´Ü ¼¹ö Ãø°ú´Â ´Þ¸® ÀÌ ¼ÒÄÏÀ¸·Î Åë½ÅÀ» ÇÑ´Ù. 5.2.2 ¼¹ö¿¡ ¿¬°á ¿äûÇϱâ
¼¹ö·ÎÀÇ ¿¬°á ¿äûÀº connect ÇÔ¼ö¸¦ ÀÌ¿ëÇÑ´Ù. #include <sys/types.h>
#include <sys/socket.h>
int connect(int sockfd, const struct sockaddr *serv_addr,
socklen_t addrlen);
ÀÌ ÇÔ¼ö´Â ¼ÒÄÏ ÁöÁ¤ ¹øÈ£ sockfd¸¦ ÀÌ¿ëÇØ¼ sockaddr¿¡ ÁöÁ¤µÈ IP¿Í Æ÷Æ®¹øÈ£·Î ¿¬°áÀ» ½ÃµµÇÑ´Ù. ¼º°øÇϸé 0À» ¹ÝȯÇÏ°í ½ÇÆÐÇϸé -1À» ¹ÝȯÇÑ´Ù. 5.2.3 ¼¹ö¿ÍÀÇ µ¥ÀÌÅÍ Åë½Å
¼¹ö¿ÍÀÇ Åë½ÅÀº recv ȤÀº send ÇÔ¼ö¸¦ ÀÌ¿ëÇÑ´Ù. 5.3 ¼¹ö¿Í Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°á°ú µ¥ÀÌÅÍ Åë½Å È帧
Á¤¸®ÇÏÀÚ¸é, ¼¹ö ÇÁ·Î±×·¥°ú Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°Àº ¿¬°áµÇ¾î¼ µ¥ÀÌÅ͸¦ ±³È¯ÇÏ°Ô µÈ´Ù. 6 ¿¹Á¦6.1 ¼¹ö ÇÁ·Î±×·¥#include <sys/socket.h> #include <sys/stat.h> #include <arpa/inet.h> #include <stdio.h> #include <string.h> #define MAXBUF 256 int main(int argc, char **argv) { int server_sockfd, client_sockfd; int client_len, n; char buf[MAXBUF]; struct sockaddr_in clientaddr, serveraddr; client_len = sizeof(clientaddr); // ¼ÒÄÏ ¸¸µé±â if ((server_sockfd = socket (AF_INET, SOCK_STREAM, 0)) < 0) { perror("socket error : "); exit(0); } // ¼ÒÄÏ¿¡ ÁÖ¼Ò¸¦ ¹´Â´Ù. bzero(&serveraddr, sizeof(serveraddr)); serveraddr.sin_family = AF_INET; serveraddr.sin_addr.s_addr = htonl(INADDR_ANY); serveraddr.sin_port = htons(atoi(argv[1])); bind (server_sockfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr)); // ¼ÒÄÏ ¿¬°á ´ë±â¿À» ¸¸µç´Ù. listen(server_sockfd, 5); while(1) { memset(buf, 0x00, MAXBUF); client_sockfd = accept(server_sockfd, (struct sockaddr *)&clientaddr, &client_len); while(1) { if ((n = read(client_sockfd, buf, MAXBUF)) <= 0) { close(client_sockfd); break; } if (write(client_sockfd, buf, MAXBUF) <=0) { perror("write error : "); close(client_sockfd); break; } } close(client_sockfd); } } 6.2 Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥#include <sys/stat.h> #include <arpa/inet.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #define MAXBUF 1024 int main(int argc, char **argv) { struct sockaddr_in serveraddr; int server_sockfd; int client_len; char buf[MAXBUF]; char rbuf[MAXBUF]; if ((server_sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("error :"); exit(0); } server_sockfd = socket(AF_INET, SOCK_STREAM, 0); serveraddr.sin_family = AF_INET; serveraddr.sin_addr.s_addr = inet_addr("218.234.19.87"); serveraddr.sin_port = htons(atoi(argv[1])); client_len = sizeof(serveraddr); if (connect(server_sockfd, (struct sockaddr *)&serveraddr, client_len) < 0) { perror("connect error :"); exit(0); } while(1) { memset(buf, 0x00, MAXBUF); read(0, buf, MAXBUF); if (write(server_sockfd, buf, MAXBUF) <= 0) { perror("write error : "); break; } memset(buf, 0x00, MAXBUF); if (read(server_sockfd, buf, MAXBUF) <= 0) { perror("read error : "); break; } printf("read : %s", buf); } close(server_sockfd); return 0; } |
|
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|