lecture Home > ASP.NET > Ç÷¯±×ÀÎÀÇ .NET ³×Æ®¿öÅ© ÇÁ·Î±×·¡¹Ö

.NET ¼ÒÄÏ ÄÄÆ÷³ÍÆ® °³¹ß°ú ASP¿¡¼­ »ç¿ëÇϱâ

   °­Á ÃÖÃÊ ÀÛ¼ºÀÏ : 2004³â 03¿ù 30ÀÏ
   °­Á ÃÖÁ¾ ¼öÁ¤ÀÏ : 2004³â 04¿ù 08ÀÏ

   °­Á ÀÐÀ½ ¼ö : ȸ

   ÀÛ¼ºÀÚ : pluginnz(ÃÖ À±±Ô)
   ÆíÁýÀÚ : Taeyo(±è Å¿µ)

   °­Á Á¦¸ñ : .NET ³×Æ®¿öÅ© ÇÁ·Î±×·¡¹Ö (3)

°­Á Àü Å¿ÀÀÇ Àâ´ã>

Ç÷¯±×ÀÎ(pluginn@naver.com) ´ÔÀÇ .NET ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö °­ÁÂ, À̹ø¿£ ¼¼¹øÂ° ½Ã°£ÀÔ´Ï´Ù.


°­Á ½ÃÀÛ >

¾Õ¼­ ¿Ã¶ó¿Â °­Á¸¦ º¸°í »ó´çÈ÷ µüµüÇÔÀ» ´À²¼½À´Ï´Ù. ±×·¡¼­ Á» ´õ ºÎµå·´°Ô ÀÛ¼ºÇØ º¸°íÀÚ ±ÛÀÇ ½ºÅ¸ÀÏÀ» Á¶±Ý ¹Ù²ãºÃ½À´Ï´Ù. º¸½Ã¸é¼­ ¾Æ½Ã°ÚÁö¸¸ °­Á¸¦ ¾²´Â Àúµµ ¸¹ÀÌ ºÎÁ·ÇÕ´Ï´Ù. ÇÏÁö¸¸ Àúº¸´Ù Á¶±Ý ´Ê°Ô ½ÃÀÛÇϽô ºÐµé²²´Â ºÐ¸í Âü°í°¡ µÇ´Â ±ÛÀÌ µÉ ²®´Ï´Ù.


¼ÒÄÏ »ý¼ºÇϱâ

À̹ø °­Á¿¡¼­´Â Àú¼öÁØ Å¬·¡½ºÀÎ System.Net.Sockets.Socket Ŭ·¡½º¿¡ ´ëÇØ ÀÚ¼¼È÷ ¾Ë¾Æº¸°í,1,2°­Á¿¡¼­ ¹è¿î Áö½ÄÀ» Åä´ë·Î ½ÉÇÃÇÏ°Ô ¼ÒÄÏ Åë½ÅÀÌ °¡´ÉÇÑ ÇÁ·Î±×·¥À» ÀÛ¼ºÇØ º¸°Ú½À´Ï´Ù. ½Ã°£ÀÌ µÇ¸é °£´ÜÇÑ µ¥ÀÌÅ͸¦ ¹ß¼ÛÇÏ¿© ¼­¹ö¿Í Ŭ¶óÀÌ¾ðÆ®°£¿¡ µ¥ÀÌÅͰ¡ Àü¼ÛµÇ´Â °Íµµ È®ÀÎÇØ º¸°Ú½À´Ï´Ù.

ÇÁ·Î±×·¥¿¡¼­ ¼ÒÄÏÀº IP ¿Í Port ·Î ±¸¼ºµÈ ³í¸®ÀûÀÎ ¿¬°áÁ¡(Á¾´ÜÁ¡) À̶ó°í ¸»¾¸µå·È½À´Ï´Ù. (¹°·Ð IP ¿Í Port ·Î ±¸¼ºµÈ ¼ÒÄÏ °´Ã¼ÀÔ´Ï´Ù.) ±×¸®°í, 1°­Á¿¡¼­ ³ª¸§´ë·Î ³×Æ®¿öÅ©ÀÇ ¿ë¾î¿¡ ´ëÇØ ½É¿ÀÇÏ°Ô Á¤ÀÇÇØ º¸¾Ò½À´Ï´Ù. ±â¾ïÀ» µÇ ´õµë¾î º¸¸é,

"¼­·Î ¿ø°Ý(¶Ç´Â ³»ºÎ)À¸·ÎºÎÅÍ ¶³¾îÁ® ÀÖ´Â ÄÄÇ»ÅͰ£¿¡ ¼ÒÄÏÀ̶ó´Â ¿¬°áÁ¡ (Á¾´ÜÁ¡)À» ÅëÇØ TCP/IP (TCP ȤÀº UDP )·Î ¿¬°áµÇ¾îÁ® ÀÖ´Â ÇÑ °³ ÀÌ»óÀÇ ³ëµå(ÄÄÇ»ÅÍ)"

À̶õ ³»¿ëÀ̾ú½À´Ï´Ù. ±×·³ ¿ì¸®°¡ Áغñ ÇØ¾ßÇÒ °ÍÀ» Á¤¸®ÇØ º¸°Ú½À´Ï´Ù.

IPAddress °´Ã¼ , Port(intÇü) ¸¸ ÀÖÀ¸¸é ¼ÒÄÏÀ» ¸¸µé ¼ö ÀÖ°ÚÁÒ? ¼ÒÄÏÀ» »ý¼ºÇϴ Ŭ·¡½º´Â ÀÌ¹Ì System.Net.Sockets ³×ÀÓ½ºÆäÀ̽º¿¡¼­ Á¦°øµÇ´Ï±î ¸»ÀÌÁÒ. ±×¸®°í µ¥ÀÌÅ͸¦ ¼ö½ÅÇÒ ¼­¹ö¿Í Ŭ¶óÀÌ¾ðÆ®¸¦ ¸¸µé¾î¾ß ÇϰÚÁÒ. º¸±â ÆíÇÏ°Ô ¾Æ·¡ ±×¸²À¸·Î Á¤¸®ÇØ º¸¾Ò½À´Ï´Ù.

¼­¹öÃøÀÇ ¼ÒÄÏÀ» ¼³¸íµå¸®¸é Ŭ¶óÀÌ¾ðÆ®µéÀÌ Á¢¼ÓÇÒ ¼ö ÀÖµµ·Ï ÀÚ½Å(¼­¹ö)ÀÇ ·ÎÄà IP¿Í Port ¸¦ ÁöÁ¤ÇÑ ¼ÒÄÏ ÀνºÅϽº°¡ µÇ°Ú±¸¿ä.. ClientÃø ÀÇ ¼ÒÄÏÀº ÀÚ½ÅÀÌ Á¢¼ÓÇÒ ¼­¹öÀÇ ¼Ó¼º Áï, ¼­¹ö¿¡¼­ Á¢¼ÓÀ» Çã¿ëÇÒ ¼ÒÄÏÀÇ IP,Port ¸¦ Ŭ¶óÀÌ¾ðÆ®¿¡¼­ ÁöÁ¤ÇØ Áà¾ßÇÕ´Ï´Ù. Socket Option À̶ó°í ½áÀÖ´Â ºÎºÐµéÀº TCP/IP¿¡¼­ Áö¿øÇÏ´Â IP ¹öÀüÀ̳ª ÇÁ·ÎÅäÄÝ Çü½ÄµéÀ» ÁöÁ¤ÇØ ÁÙ¼öÀÖ´Â Socket ÀÇ ÀÎÀÚ°ªµé ÀÔ´Ï´Ù. ÀÌÁ¦ Socket Ŭ·¡½º¿¡ ´ëÇØ Á» ´õ ¾Ë¾Æº¸µµ·Ï ÇϰڽÀ´Ï´Ù.


System.Net.Sockets ÀÇ Socket Ŭ·¡½º

.Net ¿¡¼­´Â Àú¼öÁØÀÇ Socket Ŭ·¡½º ¿Ü¿¡µµ °í¼öÁØÀÇ TCP , UDP Åë½ÅÀ» À§ÇÑ Å¬·¡½º¸¦ º°µµ·Î Á¦°øÇÕ´Ï´Ù. °í¼öÁØÀÇ ¼ÒÄÏÅë½ÅÀ» À§ÇÑ Å¬·¡½ºÀÇ °æ¿ì´Â Àú¼öÁØÀÇ ¼ÒÄÏ Å¬·¡½º º¸´Ù Á» ´õ Á÷°üÀûÀ̰í (Tcp ÀÇ °æ¿ì ¼­¹öÃø¿¡¼­´Â TcpListener ·Î »ý¼ºµÈ °´Ã¼·Î Ŭ¶óÀ̾ðÆ®ÀÇ Á¢¼ÓÀ» ±â´Ù¸®°í, Ŭ¶óÀÌ¾ðÆ®´Â TcpClient Ŭ·¡½º¸¦ ÀÌ¿ëÇØ °´Ã¼¸¦ »ý¼ºÇÏ¿© Á¢¼ÓÀ» ½Ãµµ ÇÏ¸é µÇ¸ç,UdpÀÇ °æ¿ì UdpClient ¸¦ ÀÌ¿ëÇØ ¼­¹ö/Ŭ¶óÀ̾ðÆ®ÀÇ ¿ªÇÒÀ» ´ÙÇÏ°Ô µË´Ï´Ù.) Æí¸®ÇÑ ÀÎÅÍÆäÀ̽º¸¦ Á¦°ø ÇÕ´Ï´Ù.

Socket °ú´Â ´Þ¸® ÀϹÝÀûÀ¸·Î ½ºÆ®¸² ÇüÅ·Πµ¥ÀÌÅ͸¦ ÁÖ°í ¹Þ°Ô µÇ´Âµ¥,(¹ÙÀÌÆ® Çüŵµ °¡´ÉÇÕ´Ï´Ù.) À̶§ NetworkStream Ŭ·¡½º¸¦ ÀÌ¿ëÇØ¼­ ½ºÆ®¸² ÇüÅ·ΠÁÖ°í ¹Þ½À´Ï´Ù. °í¼öÁØ Å¬·¡½º¿¡¼­´Â °´Ã¼.AcceptSocket() ¶ó´Â ¸Þ¼Òµå¸¦ Á¦°øÇÏ¿© Socket °´Ã¼¸¦ ȹµæ ÇÏ¿© Á÷Á¢ Socket Ŭ·¡½ºÀÇ °´Ã¼·Î ¹Þ¾Æ¼­ ó¸®ÇÒ ¼ö ÀÖµµ·Ï À¯¿¬¼ºµµ Á¦°øÇÕ´Ï´Ù. ÀÏ´Ü ¿ì¸®´Â Socket À» À§ÁÖ·Î °øºÎÇØ ³ª°¡°Ú½À´Ï´Ù.

System.Net.Sockets ÀÇ Socket Ŭ·¡½º°¡ °®´Â ¿É¼ÇÀ» »ìÆìº¸¸é,

Socket(AddressFamily , SocketType , ProtocolType) ÀÇ ½Ã±×³ÊÃĸ¦ °¡Áö´Â »ý¼ºÀÚ¸¸ °¡Áý´Ï´Ù.

AddressFamily ¿É¼Ç System.Net.Sockets.AddressFamily ¿­°ÅÇü
AddressFamily ¿É¼ÇÀº ´Ù·ç°ÔµÉ ¼ÒÄÏÀÇ ÁÖ¼Ò Ã¼°è¸¦ ¼±ÅÃÇÕ´Ï´Ù.¿©±â¼­ ¿ì¸®°¡ »ç¿ëÇÒ °ÍÀº InterNetworkÀÔ´Ï´Ù. Á¤È®È÷ ¸»Çϸé AddressFamily.InterNetwork °¡ µÇ°Ú½À´Ï´Ù. À̰ÍÀº IPv4 ¹öÀüÀ¸·Î ÇöÀç ¿ì¸®°¡ »ç¿ëÇϱâ À§ÇØ ¼ÂÆÃ µÇ¾îÀÖ´Â IP ü°èÀǸ¦ ¸»ÇÕ´Ï´Ù.¹Ù·Î ¾Æ·¡ InterNetworkV6 ¶ó°í º¸À̴µ¥ ¹Ù·Î ¾ÕÀ¸·Î ¿ì¸®°¡ »ç¿ëÇÒ 128bit ÀÇ ÁÖ¼Òü°è¸¦ °¡Áö°í ÀÖ´Â ¹æ½ÄÀÇ ¿­°ÅÇü °ªÀÔ´Ï´Ù. ¸¹À̺¸´ø IPX µîµî ¸¹Àº ¿É¼Çµéµµ º¸ÀÔ´Ï´Ù.

SocketType ¿É¼Ç System.Net.Sockets.SocketType ¿­°ÅÇü
SocketType ¿É¼Ç¿¡¼­´Â ÇÁ·ÎÅäÄÝÀÌ Åë½ÅÇÒ ¼ÒÄÏ Å¸ÀÔÀ» ÁöÁ¤ÇÕ´Ï´Ù.TCP/IP¿¡¼­ »ç¿ëµÉ ÇÁ·ÎÅäÄÝÀº Å©°Ô TCP ¿Í UDP ¹æ½ÄÀÌ ÀÖ´Ù°íÇß¾ú½À´Ï´Ù. ¿©±â¼­ TCP ¹æ½ÄÀº Stream À¸·Î ¿­°ÅÇüÀ¸·Î Á¤ÀǵǾîÀÖ°í, UDP ´Â Dgram À¸·Î µÇ¾îÀÖ½À´Ï´Ù. Raw Çü ŸÀÔÀÇ °æ¿ì´ÂICMP ¿Í °°Àº ÇÏÀ§ ÇÁ·ÎÅäÄÝÀ» ÀÌ¿ëÇÑ ¾îÇø®ÄÉÀ̼ÇÀ» ÀÛ¼ºÇÏ½Ç ¶§ÁöÁ¤ÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.

ProtocolType ¿É¼Ç System.Net.Sockets.ProtocolType ¿­°ÅÇü
¿©±â¼­´Â ¼ÒÄÏÀÇ ÇÁ·ÎÄÚÅç Çü½ÄÀ» ¿­°ÅÇü À¸·Î ÀúÁ¤ÇØ ÁÙ ¼ö ÀÖ½À´Ï´Ù. TCP ÀÎÁö UDP ÀÎÁö SocketType¿¡¼­ Àá±ñ ¼³¸íÇß´ø, Raw Çü½Äµµ º¸À̳׿ä. ¿©±â¼­ Áß¿äÇÑ°Ç SocketType À̳ª Address Family ÀÇ ¿É¼Ç¿¡¼­ ÁöÁ¤µÈ ÁÖ¼Òü°è¿Í ¸ÅĪÀÌ µÇ¾î¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. SocketType.Stream °ú ProtocolType.Tcp ¿Í °°ÀÌ È£È¯µÇ´ÂProtocolTypeÀ» Á¤È®È÷ ¼³Á¤Çϴ°ÍÀÌ Áß¿äÇÕ´Ï´Ù. (¾Æ·¡ ¿¹¸¦ Âü°íÇϼ¼¿ä)


[TCP ¸¦ ÀÌ¿ëÇÒ ¼ÒÄÏ ¼³Á¤]
Socket tcpSocket = new Socket(AddressFamily.InterNetwork ,SocketType.Stream ,ProtocolType.Tcp);

[UDP ¸¦ ÀÌ¿ëÇÒ ¼ÒÄÏ ¼³Á¤]
Socket udpSocket = new Socket(AddressFamily.InterNetwork ,SocketType.Dgram ,ProtocolType.Udp);


ProtocolType¿¡¼­ Àá±ñ ¼³¸íÇßµíÀÌ AddressFamily ¿Í SocketType °ú ProtocolType ÀÇ ÀÏÄ¡¼ºÀÌ Áß¿äÇÕ´Ï´Ù. À§ÀÇ ¿¹¿¡¼­ ÇöÀç Àü¼¼°è´Â IPv4 ü°è¸¦ ÀÌ¿ëÇϰí Àֱ⠶§¹®¿¡ AddressFamily.InterNetwork ¸¦ ÀÌ¿ëÇß½À´Ï´Ù. TCP ÀÇ °æ¿ì SocketType °ú ProtocolType ÀÇ °¢ Çü½Ä¿¡ ¸Â°Ô ÀÏÄ¡½ÃÄ×´Ù´Â Á¡¸¸ ÀÎÁö ÇÏ½Ã¸é ¹¹ Ưº°È÷ ¾î·Á¿î°ÍÀº ¾ø°Ú½À´Ï´Ù.

±×·³ Áö±Ý±îÁö ¹è¿î Áö½ÄÀ¸·Î ¼ÒÄÏ Å¬·¡½º¸¦ °£´ÜÇÏ°Ô ÀÛ¼ºÇÏ°í ´ÙÀ½ ¼¼¼Ç¿¡¼­ ¼­¹ö¿Í Ŭ¶óÀÌ¾ðÆ®¸¦ ±¸¼ºÇصµº¸·Ï ÇϰڽÀ´Ï´Ù. Áö±Ý±îÁö ¼³¸íÀ» Åä´ë·Î ÀÛ¼ºµÈ ¼Ò½ºÀÌ´Ï ¼³¸íÀº ÁÖ¼®À¸·Î ´ë½Å ÇϰڽÀ´Ï´Ù.

using System;
using System.Net;
using System.Net.Sockets;

namespace SocketCreate
{
    class SocketClass
    {
        [STAThread] static void Main(string[] args)
        {
            // ¼­¹ö·Î »ç¿ëµÉ ÄÄÇ»ÅÍÀÇ IPAddress °´Ã¼ »ý¼º Çö PC ¸¦ ¼­¹ö·Î ÀÌ¿ëÇÕ´Ï´Ù.
            IPAddress ipaddr = Dns.Resolve("localhost").AddressList[0];
            //IPAddress ipaddr = IPAddress.Parse("127.0.0.1"); ÇØµµ »ó°ü¾ø½À´Ï´Ù.

            // ¼ÒÄÏ¿¡ ÀÌ¿ëµÉ ¿¬°á Á¾Á¡À» »ý¼ºÇÕ´Ï´Ù. Æ÷Æ®´Â 8000¹ø
            IPEndPoint ipend = new IPEndPoint(ipaddr,8000);
            // ¼ÒÄϰ´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù.
            Socket socket = new Socket(AddressFamily.InterNetwork ,
                   SocketType.Stream,ProtocolType.Tcp);
            socket.Bind(ipend); // À§¿¡¼­ »ý¼ºÇÑ ¿¬°áÁ¾Á¡À» bind ÇÕ´Ï´Ù.

            Socket newSocket = socket.Accept();// Ŭ¶óÀ̾ðÆ®ÀÇ Á¢¼ÓÀ» ±â´Ù¸³´Ï´Ù.
        }
    }
}


0 ~ 1023 ±îÁö´Â ½Ã½ºÅÛ Æ÷Æ®·Î¼­ ½Ã½ºÅÛÀÌ »ç¿ëÇÏ°ÔµÉ Æ÷Æ®·Î ¿¹¾àµÇ¾îÁ® ÀÖ´Ù°í »ý°¢ÇÏ½Ã¸é µË´Ï´Ù.1024 ~ 49151 ±îÁö°¡ »ç¿ëÀÚ Æ÷Æ®°¡ µË´Ï´Ù. MSSQL À̳ª ³×Æ®¿öÅ© °ÔÀÓµî ³×Æ®¿÷ Åë½ÅÀÌ ÇÊ¿ä·ÎÇÏ´ÂÀÀ¿ëÇÁ·Î±×·¥µéÀÌ »ç¿ëÇÏ°ÔµÉ ¹üÀ§ À̸ç , ¿ì¸®°¡ ÀÛ¼ºÇÏ°ÔµÉ ÇÁ·Î±×·¥µéµµ Àú ¹üÀ§¾È¿¡¼­ Æ÷Æ®¸¦ ÁöÁ¤ÇÏ¿© »ç¿ëÇÏ°Ô µË´Ï´Ù.

¼ÒÄÏ Åë½ÅÀ» À§ÇÑ ¼­¹ö / Ŭ¶óÀÌ¾ðÆ® ±¸¼ºÇϱâ

ÀÌÁ¦ ¼³¸íÇÒ ³»¿ëµéÀº ¼ÒÄϳ¢¸® ¼­·Î Åë½ÅÇϱâ À§ÇÑ °£´ÜÇÑ ±¸¼ºµµÀÔ´Ï´Ù. ¹°·Ð ¾ÕÀ¸·Î ¼ÒÄÏÀ» ÀÌ¿ëÇØ¼­ ÀÚÁÖ °³¹ß ÇÑ´Ù¸é ¸Ó¸®¿¡ ÀÚµ¿À¸·Î ±×·ÁÁö±â ¶§¹®¿¡ ±¸Áö ±¸»óÇϰí ÇҰ͵µ ¾ø½À´Ï´Ù. asp³ª asp.net À» óÀ½ ¹è¿ï¶§ DB ¼­¹ö¸¦ Á¢¼ÓÇØ¼­ µ¥ÀÌÅ͸¦ °¡Á®¿À´Â À§ÇØ ±× Àü¿¡ ÀÛ¾÷ÇØ¾ß Çß´ø ÀÏ·ÃÀÇ °úÁ¤Ã³·³, ¼ÒÄÏ Åë½ÅÀ» À§Çؼ­µµ ¸¶Âù°¡Áö·Î ÀÏ·ÃÀÇ ÀýÂ÷°¡ ÇÊ¿äÇÕ´Ï´Ù.

Socket À» ÅëÇÑ µ¥ÀÌÅÍ Åë½ÅÀº ¸ðµÎ Byte ¸¦ ÀÌ¿ëÇÏ¿© Åë½ÅÀ» ÇÏ°Ô µË´Ï´Ù. ±×·¡¼­ µ¥ÀÌÅÍ Àü¼Û½Ã Byte[] ¹è¿­¿¡ µ¥ÀÌÅÍ ¸¦ ÀÔ·ÂÇϰí Send/Receive ¸¦ ÇÏ°Ô µË´Ï´Ù. Âü°í·Î Obj´Â ¼ÒÄÏ °´Ã¼¸¦ ¸»ÇÕ´Ï´Ù.
¼ÒÄÏ Áغñ
|
IPAddress , Port ¼­¹öÃø IPAddress , Port ¼ÒÄÏ Áغñ
|
¼ÒÄÏ °³¹æ/¹ÙÀεå
|
Socket() ¼­¹öÃø ¿É¼Ç ¼³Á¤
Socket.Bind(IPAddress,Port);
Obj.Connect(IPaddress,Port); ¿ø°ÝÈ£½ºÆ® ¿¬°á
|
¿¬°á ¸®½º´×
|
Socket.Listener(); Obj.Send() / Obj.Receive(); µ¥ÀÌÅÍ ¼Û.¼ö½Å
|
Client ¿¬°áÇã¿ë
|
Socket.Accept(); Obj.Shutdown();
Obj.Close();
¼ÒÄÏ Á¾·á
µ¥ÀÌÅÍ ¼Û¼ö½Å
|
Obj.Send()/Obj.Receive()
¼ÒÄÏ Á¾·á Obj.Shutdown();
Obj.Close();

¼­¹öÃøÀÇ ¼ÒÄÏ °³¹æ ¹× Ŭ¶óÀÌ¾ðÆ® ÃøÀÇ ¼ÒÄÏ Á¢¼ÓÀ» À§ÇÑ Áغñ¸¦ ÇÑ´«¿¡ º¼ ¼ö ÀÖ°Ô Á¤¸®ÇØ º¸¾Ò´Âµ¥ Á¤¸®°¡ Àß µÇ¾ú´ÂÁö ¸ð¸£°Ú½À´Ï´Ù. Á¦°¡ ¼ø¼­ ¿·¿¡ ¸Þ¼ÒµåµéÀ» ¸ðµÎ ÀÛ¼ºÇØ µÎ¾ú½À´Ï´Ù.¼ø¼­¿¡ ¸Â°Ô ¸Þ¼Òµå¸¦ º¸½Ã¸é ½±°Ô ÀÌÇØÇÏ½Ç ¼ö ÀÖÀ»²®´Ï´Ù ¿¬°áÀº Connect() ¸Þ¼Òµå¸¦ µ¥ÀÌÅÍ ¼Û/¼ö½ÅÀº Send()/Receive() ¸¦ ´Ü¾î ¶æ¸¸ ´ëÃæ º¸¾Æµµ ¹«½¼ ±â´ÉÀ» ÇÏ´Â ¸Þ¼ÒµåÀÎÁö ½±°Ô ÀÌÇØ °¡¸®¶ó »ý°¢ µË´Ï´Ù. ÀÌ ±×¸²¿¡¼­ Áß¿äÇÑ °ÍÀº ¸Þ¼Òµå º¸´Ù ,ÀÏ·ÃÀÇ ¼ø¼­µéÀÔ´Ï´Ù ¼ÒÄÏÀÇ »ý¼ººÎÅÍ ¼Ò¸ê±îÁöÀÇ °úÁ¤À» ¼÷Áö ÇϽñ⠹ٶø´Ï´Ù. ¸Þ¼ÒµåµéÀº ¾îÂ÷ÇÇ ÄÚµùÇØ ³ª°¡¸é¼­ ¼÷ÁöÇÏ°Ô µÉ°ÍÀÔ´Ï´Ù.


¼ÒÄÏÀ» ÅëÇØ µ¥ÀÌÅͰ¡ Àü¼ÛµÇ´Â ½Ã°£/Ŭ¶óÀÌ¾ðÆ®°¡ Á¢¼ÓµÇ´Â ½Ã°£µî, ¼ÒÄÏÀÌ ¾î¶² ÀÛ¾÷À» ÇÏ´Â ½Ã°£¿¡´Â ¼ÒÄÏÀÌ Blocking µË´Ï´Ù. Áï ¾²·¹µå°¡ µ¶Á¡µÇ¹Ç·Î ¾Æ¹«ÀÛ¾÷À» ÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ·± »óȲÀ» µ¿±âÈ­ µÇ¾ú´Ù°í ÇÕ´Ï´Ù. ÇѸíÀÇ Ã³¸®°¡ ³¡³¯¶§ ±îÁö µ¿±âÈ­ ÇÏ¿© ó¸®ÇØ¾ß ÇÒ °æ¿ìµµ ÇÊ¿äÇϰÚÁö¸¸, ¿©·¯ Ŭ¶óÀÌ¾ðÆ®°¡ µ¿½Ã¿¡ Á¢¼ÓÇϰí 󸮵ǵµ·Ï ºñµ¿±âÈ­ µÇ¾î ó¸® ÇØ¾ßÇÒ °æ¿ìµµ ¸¹½À´Ï´Ù. ±×·¡¼­ Socket Ŭ·¡½º¿¡¼­´Â ºñµ¿±â¿ë Á¢¼Ó , ¼Û/¼ö½Å¿ë ¸Þ¼Òµé¸¦ µû·Î Á¦°ø ÇÕ´Ï´Ù. ¸Þ¼Òµå À̸§¸¸ °£´ÜÈ÷ ¹Ù²ãÁÖ¸é ÇØ°á µÇ¹Ç·Î ÀÏ´Ü µ¿±âÈ­ÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº» ÈÄ Â÷Â÷ ¾Ë¾Æº¸µµ·Ï ÇϰڽÀ´Ï´Ù.


¼­¹ö ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö Çϱâ

À§ÀÇ ¼ø¼­ÀÇ °³³äÀ» Àß ÀÌÇØ ÇÏ¼Ì´Ù¸é ´ÙÀ½°ú °°ÀÌ ÄÚµù¿¡ µé¾î°©´Ï´Ù. ¼­¹ö/Ŭ¶óÀÌ¾ðÆ® ¸ðµÎ TCP ¸¦ ÀÌ¿ëÇß½À´Ï´Ù.

using System;
using System.Net;
using System.Net.Sockets;

namespace ServerSide
{
    class sSocket
    {
        [STAThread]
        static void Main(string[] args)
        {
            Socket ssocket , csocket;
            
            byte[] rData = new byte[1024];
            byte[] sData = new byte[1024];

            IPAddress ipaddr = IPAddress.Parse("127.0.0.1");
            IPEndPoint endpoint = new IPEndPoint(ipaddr,8000);

            ssocket = new Socket(AddressFamily.InterNetwork , SocketType.Stream ,
                         ProtocolType.Tcp);
            
            ssocket.Bind(endpoint);
            ssocket.Listen(5);

            Console.WriteLine("Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°áÀ» ±â´Ù¸³´Ï´Ù..");

            while(true)
            {
                csocket = ssocket.Accept();
                
                if (csocket.Connected)
                {
                    while(true)
                    {
                        int rDataLength = csocket.Receive(rData);
                        
                        if(rDataLength > 0)
                        {
                            Console.WriteLine(System.Text.Encoding.UTF8.GetString(rData));
                        }

                    }
                }
            }
        }
    }
}

Ŭ¶óÀÌ¾ðÆ® ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö Çϱâ

using System;
using System.Net;
using System.Net.Sockets;

namespace ClientSide
{
    class cSocket
    {
        [STAThread]    
        static void Main(string[] args)
        {
            Socket csocket;

            byte[] sData = new byte[1024];
            byte[] rData = new byte[1024];
            string inputStr;

            IPAddress ipaddr = IPAddress.Parse("127.0.0.1");
            IPEndPoint endpoint = new IPEndPoint(ipaddr,8000);

            csocket = new Socket(AddressFamily.InterNetwork ,SocketType.Stream ,
                                ProtocolType.Tcp);
            Console.WriteLine("¼­¹öÀÇ ¿¬°áÀ» ½ÃµµÇÕ´Ï´Ù.[¿£Å͸¦ Ä¡¸é ¿¬°áµË´Ï´Ù.]");
            Console.ReadLine();

            csocket.Connect(endpoint);

            if (csocket.Connected)
            {
                Console.WriteLine("¼­¹öÀÇ ¿¬°áÀÌ ¼º°øÇß½À´Ï´Ù.");
                Console.WriteLine("Àü¼ÛÇÒ µ¥ÀÌÅ͸¦ ÀÔ·ÂÇØ Áֽʽÿä");

                while(true)
                {
                    Console.Write("Àü¼ÛÇÒ µ¥ÀÌÅÍ]");
                    inputStr = Console.ReadLine();

                    if (inputStr.Trim() != String.Empty)
                    {
                        sData = System.Text.Encoding.UTF8.GetBytes(inputStr);
                        csocket.Send(sData);
                    }
                }
            }
            else
            {
                Console.WriteLine("¼­¹öÀÇ ¿¬°áÀÌ ½ÇÆÐ µÇ¾ú½À´Ï´Ù.");
            }
        }
    }
}

Àú´Â ¾Æ·¡¿Í °°ÀÌ ÇÁ·ÎÁ§Æ®¿¡ ÇϳªÀÇ ÇÁ·ÎÁ§Æ®¸¦ Ãß°¡ÇÏ¿© 2°³ÀÇ ÇÁ·ÎÁ§Æ®·Î ÄÚµùÇß½À´Ï´Ù.

¾Æ·¡´Â 2°³ÀÇ ÇÁ·ÎÁ§Æ®¸¦ µ¿½Ã¿¡ ÄÄÆÄÀÏ ÇϱâÀ§ÇØ ¾Æ·¡¿Í °°ÀÌ ¼³Á¤Çß½À´Ï´Ù. Âü°íÇϼ¼¿ä.

½ÇÇàÀ» ÇÏ¸é ¾Æ·¡¿Í °°ÀÌ Å¬¶óÀÌ¾ðÆ® / ¼­¹öÃø ½ÇÇàÈ­¸éÀÌ µ¿½Ã¿¡ º¸ÀÌ°Ô µË´Ï´Ù. ¿£Å͸¦ ÀÔ·ÂÇÏ¿© ¼­¹ö¸¦ Á¢½»ÇÕ´Ï´Ù.

ÀÌÁ¦ Ŭ¶óÀ̾ðÆ®Ãø¿¡¼­ ¼­¹ö¿¡ Á¢¼ÓÀ» ¿Ï·á ÇÏ¿´½À´Ï´Ù. text¸¦ ÀÔ·ÂÇÏ¿© ¼­¹öÃø¿¡ ¼ö½ÅÀÌ Àߵdzª È®ÀÎÇÕ´Ï´Ù.

hi ¸¦ ÀÔ·ÂÇÏ´Ï ¼­¹öÃø¿¡¼­ ¼ö½ÅÀÌ Àß µË´Ï´Ù. ±×·±µ¥ ´Ù½Ã hi ¶ó°í ÃÆ´Âµ¥.. óÀ½ ¹ß¼ÛµÈ hi ¿Í »ó´çÈ÷ ¸¹Àº °ø°£À» ¶ç°í ³ª¼­ ±×´ÙÀ½ hi °¡ Ãâ·ÂµÇ¾ú½À´Ï´Ù. ¿Ö ±×·²±î¿ä? ´ÙÀ½ °­Á¶§ ÇØ´äÀ» ¾Ë·Áµå¸®°Ú½À´Ï´Ù. ´«½ä¹Ì°¡ ÀÖÀ¸½ÅºÐµéÀº ¹ú½á ´«Ä¡Ã¤¼ÌÀ»Áöµµ ¸ð¸£°Ú³×¿ä.

Á¤¸» °£´ÜÇÑ ÄÚµùÀ» ÇØº¸¾Ò´Âµ¥.. ¾ÕÀ¸·Î ÄÚµùÇØ ³ª°¡´Âµ¥ Á¤¸» Áß¿äÇÑ ¿¹Á¦ÀÔ´Ï´Ù. À§ÀÇ ÄÜ¼Ö ¾îÇø®ÄÉÀ̼ÇÀ¸·Î ÀÛ¼ºµÈ ¼ÒÄϼҽº¸¦ Åä´ë·Î ¿¹¿Ü󸮳ª ÀÎÅÍÆäÀ̽º , Ŭ·¡½ºÈ­ ÇÏ¿© ó¸®ÇÏ¸é ½Ç¹«¿¡¼­ »ç¿ë°¡´ÉÇÑ ÄÄÆ÷³ÍÆ®°¡ µÇ´Â °ÍÀÔ´Ï´Ù. ¹°·Ð ±×Àü¿¡ °ÅÃľßÇÒ ¸î°¡Áö Áö½ÄµéÀÌ Á»´õ ÇÊ¿äÇϱ¸¿ä.

À̹ø°­Á´ ÀÌÁ¤µµ·Î ÇϰڽÀ´Ï´Ù. ´ÙÀ½ °­Á¿¡¼­´Â À̺¸´Ù Á¶±Ý ´õ Á¤±³ÇÏ°Ô ÄÚµùÀ» Çϰí, ¿¹¿Ü󸮵îÀ» °­È­ÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù. ±×¶§´Â ¼³¸íµµ ÇÔ²² µ¡ºÙ¿© º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

³¡±îÁö °­Á ÀоîÁּż­ °¨»çÇÕ´Ï´Ù.

 

Back