µ¥ÀÌÅÍ Åë½Å Project
(Socket Programing)
¡Ü ÀÎÅÍ³Ý ¼ÒÄÏ
¼ÒÄÏ (Internet socket, socket` ȤÀº network socket ¶ó°í ºÎ¸£±âµµ ÇÑ´Ù)´Â ³×Æ®¿öÅ©·Î ¿¬°áµÇ¾î ÀÖ´Â ÄÄÇ»ÅÍÀÇ Åë½ÅÀÇ Á¢Á¡¿¡ À§Ä¡ÇÑ Åë½Å °´Ã¼´Ù. ³×Æ®¿öÅ© Åë½ÅÀ» À§ÇÑ ÇÁ·Î±×·¥µéÀº ¼ÒÄÏÀ» »ý¼ºÇÏ°í, ÀÌ ¼ÒÄÏÀ» ÅëÇؼ ¼·Î µ¥ÀÌÅ͸¦ ±³È¯ÇÑ´Ù. Áï ¼ÒÄÏÀ̶õ ¿î¿µÃ¼Á¦ÀÇ ÇÑ ºÎºÐÀ¸·Î¼ ³×Æ®¿öÅ© Åë½ÅÀ» À§ÇÑ ÇÁ·Î±×·¥ÀÌ°í ¾ÖÇø®ÄÉÀ̼ÇÀº ƯÁ¤ÇÑ ÇÔ¼ö¸¦ ÅëÇؼ ¼ÒÄÏ¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Ù. ¼ÒÄÏ ÇÁ·Î±×·¥Àº ´ëºÎºÐ ½ÖÀ¸·Î Á¸ÀçÇϴµ¥, ¼¹ö ÇÁ·Î±×·¥°ú Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥ÀÌ ¹Ù·Î ±×°ÍÀÌ´Ù. ÀÎÅÍ³Ý ¼ÒÄÏÀº Å©°Ô µÎ °³ÀÇ Å¸ÀÔÀ¸·Î ³ª´©¾î Áú¼ö Àִµ¥
UDP ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÏ´Â °æ¿ì¿Í TCP ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÏ´Â °æ¿ì·Î ³ª´ ¼ö ÀÖ´Ù.
-À§Å°¹é°ú Âü°í-
¡Ü UDP, TCP ÇÁ·ÎÅäÄÝ
À§¿¡¼ ¸»ÇßµíÀÌ ÀÎÅÍ³Ý ¼ÒÄÏÀº Å©°Ô µÎ °¡Áö ŸÀÔÀ¸·Î ³ª´¶´Ù°í ÇÏ¿´´Âµ¥ TCP¿Í UDP¶ó´Â ÇÁ·ÎÅäÄÝ¿¡ ´ëÇÏ¿© ¾Ë¾Æº¸¸é, µ¥ÀÌÅ͸¦ Àü¼ÛÇÑ´Ù´Â Á¡¿¡¼ TCP, UDP ¸ðµÎ ºñ½ÁÇÏÁö¸¸ Ư¼º¿¡ ÀÖ¾î¼ ¾à°£ÀÇ Â÷ÀÌ°¡ ÀÖ´Ù.
TCP - ¿¬°áÁöÇâÀ̸ç, ÀÚüÀûÀ¸·Î ¿À·ù¸¦ ó¸®Çϸç, ³×Æ®¿öÅ© Àü¼ÛÁß ¼ø¡¦(»ý·«)
|
INSOCK2.H Çì´õ¸¦ Æ÷ÇÔÇØ¾ß ÇÑ´Ù. ¶ÇÇÑ WINSOCK2.H Çì´õ¸¦ Æ÷ÇÔÇϱâ À§Çؼ´Â ws2_32.lib ¶óÀ̺귯¸®¸¦ ¸µÅ©½ÃÄÑ¾ß ÇÑ´Ù. ´ÙÀ½ÀÇ ¸Þ´º·Î µé¾î°¡¼ ws2_32.lib¸¦ Ãß°¡½ÃÄÑ ÁØ´Ù.
±× ÈÄ¿¡ ¼¹ö ºÎºÐÀÇ ¼Ò½º¿Í Ŭ¶óÀ̾ðÆ® ºÎºÐÀÇ ¼Ò½º¸¦ ½ÇÇà ½ÃŲ´Ù. ¼¹öºÎºÐ ¼Ò½º¸¦ ½ÇÇà½ÃÄѼ ¼¹ö ½ÃÀÛÀ» ´©¸£¸é ¼ÒÄÏÀÌ »ý¼ºµÇ°í Ŭ¶óÀ̾ðÆ®·ÎºÎÅÍ ¼ö½Å Áغñ°¡ µÇ´Â °ÍÀÌ´Ù. ±×¸®°í Ŭ¶óÀ̾ðÆ® ºÎºÐ¿¡¼ (°Ü¿ï.JPG)¶ó´Â ÆÄÀÏÀ» ¿¬´Ù.
ÀÌÈÄ¿¡ Àü¼ÛÀ» ´©¸£¸é 512¹ÙÀÌÆ®¾¿ µ¥ÀÌÅÍ°¡ Àü¼ÛµÈ´Ù.
µ¥ÀÌÅÍ ¼Û½ÅÀ» ¸¶Ä£ Ŭ¶óÀ̾ðÆ®´Â ¼ÒÄÏ Á¾·áÇÔ¼ö¸¦ ½á¼ ¼ÒÄÏÀ» ´Ý°Ô µÈ´Ù. ÀÌ·¸°Ô ÆÄÀÏÀ» Àü¼ÛÇÏ´Â °úÁ¤ ÈÄ¿¡ ¼¹ö·ÎºÎÅÍ Àбâ¿äû ÆÐŶ(RRQ)À» º¸³»¼ µ¥ÀÌÅ͸¦ ÀÐ¾î ¿À´Â °úÁ¤À» ĸÃÄÇÑ °ÍÀÌ´Ù. À§¿¡¼ ¼³¸í ÇÏ¿´µíÀÌ ¼¹ö¿¡¼ Àбâ¿äû ÆÐŶ(RRQ)À» ¼ö½ÅÇÏ¿© ¿À·ù°¡ ¾øÀ¸¸é ÀÀ´ä¸Þ¼¼Áö(ACK)¾øÀÌ ¹Ù·Î µ¥ÀÌÅ͸¦ Àü¼ÛÇÔÀ¸·Î½á ´ë´äÇÑ´Ù.
¼ö½ÅÇ׸ñ¿¡ ¹Þ°íÀÚ ÇÏ´Â ÆÄÀϸíÀ» ÀÔ·ÂÇÑ´Ù. À߸ø ÀÔ·ÂÇÏ°í ¼ö½ÅÀ» ´©¸¦ °æ¿ì ¿À·ù°¡ ¹ß»ýÇß´Ù°í ¸Þ½ÃÁö°¡ ¶ß°Ô µÈ´Ù.
ÆÄÀϸíÀ» ¿Ã¹Ù¸£°Ô ÀÔ·ÂÇÑ ÈÄ ¼ö½ÅÀ» ´©¸£¸é ¼¹ö·ÎºÎÅÍ ¼ö½ÅÀÌ ÀÌ·ç¾îÁø´Ù. âÀ» Àߺ¸°ÔµÇ¸é ¼¹ö´Â (...Àü¼ÛÇÔ...)ÀÌ·¸°Ô ¸Þ½ÃÁö°¡ ¶ß°Ô µÇ°í Ŭ¶óÀ̾ðÆ®´Â (...¼ö½ÅÇÔ...)ÀÌ·¸°Ô ¸Þ½ÃÁö°¡ ¶ß°Ô µÈ´Ù. ÆÄÀϼö½ÅÀ» ¸¶Ä£ Ŭ¶óÀ̾ðÆ®´Â ¼ÒÄÏÁ¾·ù ÇÔ¼ö¸¦ ÀÌ¿ëÇØ ¼ÒÄÏÀ» ´Ý´Â´Ù.
¡Ü ±¸ÇöÇÑ ÁÖ¿ä ÇÔ¼ö ¼³¸í
// À©¼ÓÀ» ÃʱâÈ ÇÑ´Ù.
WSADATA wsa;
if(WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
(»ç¿ëÇÒ À©¼Ó ¹öÀüÀ» ¿äûÇÔÀ¸·Î½á À©¼Ó ¶óÀ̺귯¸®¸¦ ÃʱâÈ ÇÏ´Â ¿ªÇÒ)
// socket()
m_hServerSock = socket(AF_INET, SOCK_DGRAM, 0);
if(m_hServerSock == INVALID_SOCKET)
(socket() ¼ÒÄÏÀ» »ý¼ºÇÏ´Â ÇÔ¼ö·Î SOCK_DGRAMÀº UDP¸¦ »ç¿ëÇÑ´Ù´Â