°Á Àü Å¿ÀÀÇ Àâ´ã>
Ç÷¯±×ÀÎ(pluginn@naver.com)
´ÔÀÇ .NET ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö °ÁÂ, ±× ³× ¹øÂ° ½Ã°£ÀÔ´Ï´Ù.
°Á ½ÃÀÛ >
4¹øÂ°
°Á ½Ã°£ÀÔ´Ï´Ù. À̹ø½Ã°£¿¡´Â Socket(Àú¼öÁØ) Ŭ·¡½º¸¦ ÀÌ¿ëÇÑ ÇÁ·Î±×·¥À» ¿Ï¼ºÇغ¸°í ÀÌÇØÇϴµ¥ ÁßÁ¡À» µÎ°Ú½À´Ï´Ù. Áö³ ½Ã°£¿¡ ½ÉÇÃÇÏ°Ô ÄÜ¼Ö ¾îÇø®ÄÉÀ̼ÇÀ¸·Î ¸¸µé¾î º¸¾Ò´Âµ¥ ¹«Ã¥ÀÓÇÏ°Ô ¼Ò½º¸¸ º¸¿©µå¸®°í °Á¸¦ Á¢¾î ¹ö·È¾ú³×¿ä. ÇÏÁö¸¸ ±× ¼Ò½º¸¦ ÄÚµùÇØº¸°í ¸¹Àº ±Ã±ÝÁõÀ» °¡Áö¼Ì°Å³ª, ÃÖ¼ÒÇÑ ÀÌ·¯ÇÑ ºÎºÐµéÀº "¿Ö?" ¶ó°í Àǹ®À» °®À¸¼Ç ºÐµéÀº ÇÑ ´Ü°è ¾÷±×·¹ÀÌµå µÇ´Â ½Ã°£ÀÌ µÉ²®´Ï´Ù. ¹°·Ð Áö±Ý±îÁö °Á¸¦ Àоî¿À½ÅºÐµéµµ ÇÑ ´Ü°è ¾÷±×·¹ÀÌµå µÉ²®´Ï´Ù. ^^
¼¹ö & Ŭ¶óÀ̾ðÆ®
¿¹ÀüÀÇ Host ¿Í Terminal ȯ°æ¿¡¼ ÇöÀçÀÇ Server ¿Í Client ȯ°æÀ» º¸¸é ±× Â÷À̸¦ È®¿¬È÷ ´À³¥¼ö ÀÖ½À´Ï´Ù. Áß¾Ó ÁýÁß½ÄÀ̾ú´ø Host ½ÃÀý¿¡´Â ÀϹæÀûÀÎ Response/Request ¿´´Ù¸é Server & Client ȯ°æÀº interactive ÇÑ Response/Request ¶ó°í ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹ÀüÀÇ Áß¾ÓÁýÁᫎ host ¹æ½ÄÀº µ¥ÀÌÅÍ¿Í Å¬¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥À» ¼¹ö¿¡ ¸ðµÎ ¿Ã·Á¼ Ŭ¶óÀÌ¾ðÆ®¿¡¼´Â (À©µµ¿ì Å͹̳Îó·³) ¼¹ö¿¡ Á¢¼ÓÇØ¼ ÇÁ·Î±×·¥À» ½ÇÇàÇϰí, ¶Ç µ¥ÀÌÅ͸¦ °¡Á®¿À´Â ¼¹ö¿¡ ÁýÁßÀûÀÎ ¹Ý¸é ,ÇöÀçÀÇ Server & Client ȯ°æÀº ¶È¶ÈÇÑ Client ´öºÐ¿¡ Client ¿Í Server ÇÒ ÀÏÀÌ ±¸ºÐµÇ°í(¼¹ö½ºÅ©¸³,Ŭ¶óÀÌ¾ðÆ® ½ºÅ©¸³ À¸·Î ±¸ºÐµÇµíÀÌ) Client °¡ ¼¹ö¿¡°Ô Request Çϰí Server ´Â Client¿¡¼ Response µÇ´Â Á» ´õ Áö´ÉÀûÀÌ°í ¼¹ö¿¡ Load ¸¦ ´ú¾îÁÖ´Â Áøº¸ÀûÀÎ ÇüÅ·Π¹ßÀüÇØ ¿Ô½À´Ï´Ù.
°á±¹ ÇöÀç ¼ÒÄÏ ÇÁ·Î±×·¥µµ ¼¹ö¿Í Ŭ¶óÀÌ¾ðÆ®¿¡°Ô Response Çϰí Request ÇÒ ¼ö ÀÖ´Â Åë·Î¸¦ Á¦°øÇϰí Ŭ¶óÀÌ¾ðÆ® ºÎºÐ ¼ÒÄÏÀº Ŭ¶óÀÌ¾ðÆ® ºÎºÐÀ» °í·ÁÇÏ¿© ¿¹¿Ü󸮳ª ¿À·ù ¹ß»ý½Ã »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º ó¸®, ¼¹öÃø ¿¡´Â ¼¹öÃø ¸®¼Ò½º °ü¸®¸¦ À§ÇÑ È¿À²ÀûÀÎ ÄÚµù ¹× ´ÙÁß Á¢¼ÓÀÚ¸¦ À§ÇÑ ºñµ¿±â(¾²·¹µå)ó¸®, ·Î±×ó¸® µîµîÀ¸·Î °³¹ßÇÏ¿© Á» ´õ Áøº¸ÀûÀ¸·Î Åë½ÅÇÒ ¼ö Àִ ȯ°æÀ» Á¦°øÇϵµ·Ï ÇÏ´Â °ÍÀÔ´Ï´Ù.
3°À» ÅëÇÏ¿© ±âº»ÀûÀÎ ¼ÒÄÏ Åë½Å¿¡ ´ëÇØ ¹è¿ü½À´Ï´Ù(¹°·Ð 10% µµ ¾ÈµÇ´Â ³»¿ëÀÌÁö¸¸ À̰ÍÀº ³ª¸ÓÁö 90%¸¦ ¿òÁ÷À̴µ¥ ÇØ´çµÇ´Â Áß¿äÇÑ ³»¿ëÀÔ´Ï´Ù.).ÀÚ.. Áö±Ý±îÁö °Á¸¦ ÅëÇØ ÀÌÇØÇÏÁö ¸øÇß´ø ºÎºÐÀÌ ÀÖ´Ù¸é À̹ø°Á¿¡ ÇØ°áÇϵµ·Ï ÇØ¾ß ÇÕ´Ï´Ù. ¹°·Ð À̹ø°Á¿¡¼ ´Ù ÇØ°áÇϱ⿡´Â ºÎÁ· ÇÕ´Ï´Ù ´ÜÁö, À̹ø°Á¸¦ ÅëÇØ¼ 1,2,3 °Á¸¦ ´Ù½Ã ÀоúÀ»¶§ "¾Æ~" Çϰí ÀÌÇØ ÇÏ´Â °è±â°¡ µÇ¾ß ÇÑ´Ù´Â ¸»ÀÔ´Ï´Ù.
À§ÀÇ ¼¹ö¿Í Ŭ¶óÀ̾ðÆ®ÀÇ °³³äÀ» °¡Áö°í ¼¹ö´Â ºÎºÐÀº ´õ¿í ¼¹ö´ä°Ô Ŭ¶óÀÌ¾ðÆ®´Â Å¬¶óÀÌ¾ðÆ® ´ä°Ô
ÇÁ·Î±×·¥À» ÀÛ¼ºÇغ¸µµ·Ï ÇϰڽÀ´Ï´Ù.
¼¹öÃø ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace ServerSideSocket
{
class ServerClass
{
public static Socket Server , Client;
public static byte[] getByte = new byte[1024];
public static byte[] setByte = new byte[1024];
public const int sPort = 5000;
[STAThread]
static void Main(string[] args)
{
string stringbyte = null
IPAddress serverIP = IPAddress.Parse("127.0.0.1");
IPEndPoint serverEndPoint = new IPEndPoint(serverIP,sPort);
Server=
new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
Server.Bind(serverEndPoint);
Server.Listen(10);
Console.WriteLine("-----------------------------------------------------");
Console.WriteLine(" Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°áÀ» ±â´Ù¸³´Ï´Ù........ ");
Console.WriteLine("-----------------------------------------------------");
Client = Server.Accept();
if(Client.Connected)
{
while(true)
{
Client.Receive(getByte,0,getByte.Length,SocketFlags.None);
stringbyte = Encoding.UTF7.GetString(getByte);
if (stringbyte != String.Empty)
{
Console.WriteLine("¼ö½Åµ¥ÀÌÅÍ:{0} | ±æÀÌ:{1}",stringbyte,stringbyte.Length);
setByte = Encoding.UTF7.GetBytes(stringbyte);
Client.Send(setByte,0,setByte.Length,SocketFlags.None);
}
}
}
}
}
}
|
ÀÏ´Ü ¼¹öÃø ¼Ò½º¸¦ ºÐ¼®ÈÄ Å¬¶óÀ̾ðÆ®ÃøÀÇ ¼Ò½º¸¦ ÀÛ¼ºÇÏ°í ±× ´ÙÀ½ ¼Ò½º¸¦ º¸°ÇØ ³ª°¡°Ú½À´Ï´Ù.
ÀÚ~~ Àú¹ø¼Ò½º¿Í ½ÃÀÛÀº ºñ½ÁÇÕ´Ï´Ù. ±×¸® ¾î·ÆÁö´Â ¾Ê½À´Ï´Ù.
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
|
ÀÚ~~ using Áö½Ã¾î¸¦ ÅëÇØ Àü ½Ã°£¿¡ ¹è¿ü´ø °¢Á¾ ³×ÀÓ½ºÆäÀ̽ºµéÀ» ¸ðµÎ ¼±¾ðÇÕ´Ï´Ù. °£´ÜÇϰÔ
»ìÆìº¸¸é System.Net Ŭ·¡½º¿¡´Â ¼ÒÄÏÀÌ ÇÊ¿ä·Î ÇÏ´Â ¿¬°á Á¾Á¡ »ý¼ºÀ» À§ÇÑ IPAddress,
IPEndPoint , Dns Ŭ·¡½º µîÀÌ Æ÷ÇԵǾî ÀÖ°í , System.Net.Sockets Ŭ·¡½º¿¡´Â ¿ì¸®°¡ »ý¼ºÇÒ ¼ÒÄÏ
Ŭ·¡½º°¡ Æ÷ÇԵǾîÁ® ÀÖ½À´Ï´Ù.
System.Text´Â System.Text.Encoding Ŭ·¡½º¸¦ »ç¿ëÇϱâ À§ÇØ ¼±¾ðÇߴµ¥, °£´ÜÈ÷ ¼³¸íÀ» µå¸®ÀÚ¸é .Net ¿¡¼ÀÇ ¼ÒÄÏÅë½ÅÀº Byte ´ÜÀ§·Î Åë½ÅÀ» ÇÑ´Ù°í ¸»¾¸ µå·È½À´Ï´Ù. ÇÏÁö¸¸ Ưº°ÇÑ °æ¿ì°¡ ¾Æ´Ï°í¼´Â ÀϹÝÀûÀ¸·Î Text ¿¡ ´ëÇÑ Ã³¸®´Â String À¸·Î ÇϰԵ˴ϴÙ. Console.ReadLine(); À̳ª À©Æû,À¥Æû°ú °°Àº ¾îÇø®ÄÉÀ̼ǿ¡¼ÀÇ ÀÔ·Â ÄÁÆ®·Ñ¿¡¼ ÀÇ Value µéµµ ´ëºÎºÐ String ÀϰÍÀÔ´Ï´Ù.
Byte ´ÜÀ§´Â ±×¸¸Å ´Ù·ç±â°¡ ºÒÆíÇϰí È¿À²¼ºÀÌ ¶³¾îÁö±â ¶§¹®ÀÔ´Ï´Ù. ÇÏÁö¸¸ ÀúÈñ´Â byte Åë½ÅÀ»
ÇØ¾ßÇϱ⠶§¹®¿¡ System.Text.Encoding Ŭ·¡½º¸¦ »ç¿ëÇÏ¿©, string ´ÜÀ§ÀÇ ¹®ÀÚ¿À» Byte ´ÜÀ§·Î ½±°Ô
º¯È¯Çϰí Byte ´ÜÀ§ÀÇ ¹è¿À» String À¸·Î ½±°Ô º¯È¯ ÇÏ°Ô Çϱâ À§Çؼ Text ³×ÀÓ½ºÆäÀ̽º¸¦ Æ÷ÇÔ Çß½À´Ï´Ù
(Byte <-> String , String <-> Byte º¯È¯½Ã µ¥ÀÌÅÍ Æ÷¸Ë±îÁö ÁöÁ¤ÇØ ÁÙ ¼ö Àֱ⠶§¹®¿¡ Çѱ۰ú °°Àº 2byte ¹®ÀÚ Àü¼Û½Ã Æ÷¸Ëº¯È¯µµ ÇØ ÁÙ ¼ö ÀÖ½À´Ï´Ù.)
namespace ServerSideSocket
class ServerClass
|
ÀÚ~~ ¼¹öÀÇ ³×ÀÓ½ºÆäÀ̽º´Â ServerSideSocket À¸·Î ÀÓÀ¸·Î Á¦°¡ ÁöÁ¤Çß½À´Ï´Ù. Class µµ ServerClass
·Î ÀÓÀ¸·Î ÁöÁ¤Çß½À´Ï´Ù.
class ServerClass
{
public static Socket Server , Client;
public static byte[] getByte = new byte[1024];
public static byte[] setByte = new byte[1024];
public const int sPort = 5000;
|
À̹ø¿¡´Â ¿ÜºÎ·Î ¼±¾ðµÈ °¢Á¾ º¯¼ö µéÀÔ´Ï´Ù. Ŭ·¡½º ³»ºÎ¿¡ ¼±¾ðÇØ¼ Main ÇÔ¼ö¿¡¼ »ç¿ë °¡´ÉÇϵµ·Ï
Á¤ÀûÀ¸·Î ¼±¾ðÇÏ¿´½À´Ï´Ù. ÇÏÁö¸¸ Áö±Ý°ú °°Àº ÇÁ·Î±×·¥¿¡¼´Â Main ÇÔ¼ö ³»ºÎ¿¡ Á¤ÀÇÇÏ¿© »ç¿ëÇÏ¿©µµ
¹«¹æÇÕ´Ï´Ù. Ŭ·¡½º¸¦ ÀνºÅϽº·Î »ý¼ºÇؼ »ç¿ëÇÏÁö ¾ÊÀ» °ÍÀ̱⠶§¹®ÀÔ´Ï´Ù. ÇÏÁö¸¸ Àú´Â ±¸Áö
Ŭ·¡½º º¯¼öµé·Î ¼±¾ðÇÏ¿© Main ¸Þ¼Òµå¿¡¼ »ç¿ëÇØºÃ½À´Ï´Ù.
Server ¼ÒÄÏ °´Ã¼´Â ¼¹öÃøÀÇ IPEndPoint ·Î bind µÅ¼ Accept µÇ¾î Ŭ¶óÀÌ¾ðÆ®¸¦ ±â´Ù¸®°Ô µÉ ¼¹öÃø
¼ÒÄÏ °´Ã¼ À̰í, Client °´Ã¼´Â Server.Accept() ¸Þ¼Òµå·ÎºÎÅÍ ¸®ÅϵǴ Ŭ¸®¾ðÆ® ÃøÀÇ ¼ÒÄÏ °´Ã¼¸¦
¹Þ±â À§ÇØ ¼±¾ðÇÑ ¼ÒÄÏ °´Ã¼ÀÔ´Ï´Ù. getByte ¿Í setByte ´Â º¯¼ö¸í¿¡¼ ¾Ë ¼ö ÀÖµíÀÌ µ¥ÀÌÅ͸¦ ¹Þ°í, º¸³»°í ÇÒ º¯¼ö(¹öÆÛ)°¡ µÇ°Ú½À´Ï´Ù. .Net ¿¡¼ÀÇ ¼ÒÄÏÅë½ÅÀº ¹ÙÀÌÆ® À̱⠶§¹®¿¡ byte Çü À¸·Î ¼±¾ð µÇ¾ú°í, µ¥ÀÌÅͰ¡ ±ÛÀÚ ÇÑÀÚ°¡ ¾Æ´Ï¶ó ¿©·¯ ÀÚµµ °¡´ÉÇϵµ·Ï ¹è¿·Î ¼±¾ðÇÏ¿´½À´Ï´Ù.
¼¹ö¿¡¼ Ŭ¶óÀÌ¾ðÆ®¸¦ ±â´Ù¸®°ÔµÉ Æ÷Æ®´Â 5000 ¹øÀ¸·Î ÀÓÀ¸·Î ÁöÁ¤Çß½À´Ï´Ù. sPort ¿¡ static À» ºÙÀÌÁö ¾ÊÀº ÀÌÀ¯´Â const º¯¼ö ÀÚü°¡ Á¤ÀûÀ̱⠶§¹®ÀÔ´Ï´Ù. ´ÙÀ½ ¼Ò½º¸¦ º¸°Ú½À´Ï´Ù.
[STAThread]
static void Main(string[] args)
{
string stringbyte = null
IPAddress serverIP = IPAddress.Parse("127.0.0.1");
IPEndPoint serverEndPoint = new IPEndPoint(serverIP,sPort);
Server= new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
Server.Bind(serverEndPoint);
Server.Listen(10);
|
stringbyte º¯¼ö¸¦ ¾Æ·¡ ¼Ò½º¿¡¼ ¾²ÀÏ ¼ö½ÅµÈ byte ¹è¿ÀÇ º¯¼öÀÇ µ¥ÀÌÅ͸¦ string ÇüÅ·Πº¯È¯ÇÏ¿© ÀúÀåÇÒ º¯¼ö°¡ µÇ°Ú½À´Ï´Ù. IPAddress ¿Í IPEndPoint Ŭ·¡½º·Î Á¤ÀÇµÈ °´Ã¼º¯¼öÀÇ °æ¿ì 3°¿¡¼ ¾Ë¾ÆºÃµíÀÌ Socket Ŭ·¡½º°¡ bind µÉ EndPoint ¸¦ »ý¼ºÇϱâ À§ÇØ, °¢°¢ ¼¹öÀÇ IP´Â ÇöÀç ·ÎÄà IP ·Î½á LoopBack ÁÖ¼Ò¸¦ ÀÌ¿ëÇÏ¿´½À´Ï´Ù. port ´Â const·Î ¼±¾ðÇÑ º¯¼ö¸¦ ÀÌ¿ë ÇÏ¿´½À´Ï´Ù.
¼ÒÄÏÀÇ ¿°ÅÇüÀ¸·Î ¼±¾ðµÈ ¼Ó¼ºµéÀ» °¡¸¸ÀÌ »ìÆìº¸¸é, TCP ·Î Åë½ÅÇϱâÀ§ÇÑ ¼Ó¼ºÀ̶ó´Â°ÍÀ» ½±°Ô
¾Ë¾Æ º¸½Ç ¼ö ÀÖÀ» ²®´Ï´Ù. Server.Listen(10) ´Â ¼ÒÄÏÀÇ BackLog ¸¦ 10°³¸¦ ÁöÁ¤ Çß½À´Ï´Ù
Ŭ¶óÀ̾ðÆ®ÀÇ µ¿½Ã Á¢¼ÓÀÌ ÀÖÀ» °æ¿ì Queue ¿¡ 10°³±îÁö ÀúÀå Çϰڴٴ ¶æÀÔ´Ï´Ù.
Console.WriteLine("-----------------------------------------------------");
Console.WriteLine(" Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°áÀ» ±â´Ù¸³´Ï´Ù........ ");
Console.WriteLine("-----------------------------------------------------"); Client =
Server.Accept();
|
ÀÚ~~ Ŭ¶óÀÌ¾ðÆ®°¡ Á¢¼Ó °¡´ÉÇϵµ·Ï Áغñ¸¦ ¸ðµÎ ³¡³Â½À´Ï´Ù. ÀÌÁ¦ Accept ¸Þ¼Òµå¸¦ È£ÃâÇϱâ Àü¿¡
Text¸¦ Ãâ·ÂÇÏ¿© ÁøÇà »óŸ¦ ¾Ëµµ·Ï ÇØ ³õ¾Ò½À´Ï´Ù. Áö±Ý±îÁö ÀÌ»óÀÌ ¾ø´Ù¸é ¿¹¿Ü°¡ ¹ß»ýÇÏÁö
¾Ê°í, À§ÀÇ ÅØ½ºÆ®°¡ Ãâ·ÂµÉ°ÍÀÔ´Ï´Ù.
Accept() ¸Þ¼Òµå¸¦ È£ÃâÇÏ´Â ¼ø°£ ½º·¹µå°¡ ¸ØÃã´Ï´Ù. ±×·¯¹Ç·Î Accept() ¸Þ¼Òµå¸¦ È£Ãâ Çϱâ Àü¿¡
text ¸¦ ¸ÕÀú Ãâ·ÂÇÏ¿´½À´Ï´Ù.
if(Client.Connected)
{
while(true)
{
Client.Receive(getByte,0,getByte.Length,SocketFlags.None);
stringbyte = Encoding.UTF7.GetString(getByte);
if (stringbyte != String.Empty)
{
Console.WriteLine("¼ö½Åµ¥ÀÌÅÍ:{0} | ±æÀÌ:{1}",stringbyte,stringbyte.Length);
Client.Send(setByte,0,setByte.Length,SocketFlags.None);
}
}
|
ÀÌ ºÎºÐÀÌ ¾à°£ Áß¿äÇÕ´Ï´Ù. ¿Ö ¹«ÇÑ ·çÇÁ¸¦ µ¹¾Æ¾ß ÇÏ´ÂÁö ¾Ë¾Æ¾ß ÇÕ´Ï´Ù. ¼¹ö´Â Ŭ¶óÀÌ¾ðÆ®·ÎºÎÅÍ
¹ß½ÅµÈ µ¥ÀÌÅ͸¦ ¾ðÁ¦ ¼ö½ÅÇØ¾ßÇÒÁö ¾Ë ¼ö ¾ø½À´Ï´Ù. ¹Ý´ë·Î Ŭ¶óÀÌ¾ðÆ®´Â µ¥ÀÌÅ͸¦ ÀÔ·ÂÇϰí [Enter] ¸¦ Ä¡´Â ¼ø°£ ¹ß¼ÛµÇ°Ô ÇÏ¸é µÇ±â ¶§¹®¿¡ ¹ß¼ÛµÉ À̺¥Æ® ½Ã°£À» ¾Ë ¼ö ÀÖ½À´Ï´Ù. ±×·¡¼ ¹«ÇÑ Loop ¸¦ µ¹·Á Ç×»ó Receive ÇØ¾ß ÇÕ´Ï´Ù. ±×·¡¼ ¼¹öÀÇ ºÎÇϰ¡ Å«ÆíÀÔ´Ï´Ù.¼¹ö¿¡ 100¸íÀÇ »ç¿ëÀÚ°¡ Á¢¼ÓÇß´Ù¸é 100°³ÀÇ ¼ÒÄÏ °´Ã¼°¡ °¢°¢ÀÇ Å¬¶óÀ̾ðÆ®ÀÇ ¼ÒÄÏÀ» ¹«ÇÑ·çÇÁ¸¦ µ¹¸ç °Ë»çÇÏ°Ô µË´Ï´Ù.±×·¡¼ ¼¹öÀÇ
ºÎÇϰ¡ Å©°ÔµË´Ï´Ù.
À§ÀÇ ¼³¸íÀ» ÂüÁ¶·Î ¼Ò½º¸¦ ¼³¸íÇÏÀÚ¸é ÀÌ·± ½Ã³ª¸®¿À°¡ µË´Ï´Ù.
Ŭ¶óÀÌ¾ðÆ®·ÎºÎÅÍ µ¥ÀÌÅͰ¡ ¾ðÁ¦ ¿ÃÁö ¸ð¸£´Â ¼¹ö´Â ¹«ÇÑ Loop ¸¦ µ¹¸é¼ Accept() ·Î ¾òÀº Ŭ¶óÀÌ¾ðÆ® Ãø ¼ÒÄÏÀ» Ç×»ó °Ë»çÇÏ¿© µ¥ÀÌÅÍ À¯¹«¸¦ È®ÀÎÇÕ´Ï´Ù. ¸¸¾à µ¥ÀÌÅͰ¡ ¼ö½ÅµÇ¸é(Ŭ¶óÀÌ¾ðÆ® Ãø¿¡¼ ¼ÒÄÏÀ¸·Î µ¥ÀÌÅ͸¦ ¹ß¼ÛÇϸé) getByte ¹è¿¿¡ ÀúÀåÇÑÈÄ stringbyte ·Î byte ¹è¿ÀÇ ¹®ÀÚµéÀ» ¹®ÀÚ¿·Î ¹Ù²ÛÈÄ String.Empty ·Î ¼ö½ÅµÈ µ¥ÀÌÅͰ¡ ÀÖ´ÂÁö ¾ø´ÂÁö °Ë»çÇÏ°Ô µË´Ï´Ù. ¼ö½ÅµÈ µ¥ÀÌÅͰ¡ ÀÖ´Ù¸é ȸ鿡 Ãâ·ÂÇϰí, ¼ö½ÅµÈ µ¥ÀÌÅ͸¦ ¹ß¼ÛÇÑ Å¬¶óÀÌ¾ðÆ® ÃøÀ¸·Î Àç ¹ß¼ÛÇÏ°Ô µË´Ï´Ù.
Client.Receive(getByte,0,getByte.Length,SocketFlags.None);
Recevie ³ª Send ¸Þ¼ÒµåÀÇ °æ¿ì °°Àº ½Ã±×³ÊÃĸ¦ °°°ÔµÇ´Âµ¥, Á» ÀÚ¼¼ÇÏ°Ô »ìÆìº¸ÀÚ¸é, getByte ´Â ¹è¿¿¡ µ¥ÀÌÅ͸¦ ¹ÞµÇ, 2¹øÂ° ÀÎÀÚÀÎ 0ºÎÅÍ 3¹øÂ° ÀÎÀÚÀÎ ¹è¿ÀÇ ±æÀÌ ¸¸Å ±×·¯´Ï±î, 1024 ±îÁö ÀúÀåÇÒ ¼ö ÀÖµµ·Ï ÇØÁÝ´Ï´Ù. SocketFlags ¿É¼ÇÀº none À¸·Î ¿©±â¼ »ç¿ëÇÏÁö ¾Ê¾Ò½À´Ï´Ù.
Âü°í·Î Receive ³ª Send ¸Þ¼ÒµåÀÇ °æ¿ì int ÇüÀ¸·Î ¼Û/¼ö½ÅµÈ µ¥ÀÌÅÍÀÇ ±æÀ̸¦ ¸®ÅÏÇÏ°Ô µË´Ï´Ù.
int gDataLength =
Client.Receive(getByte,0,getByte.Length,SocketFlags.None);
ÀÌ·±½ÄÀ¸·Î gDataLength º¯¼öÀÇ °ªÀ» üũÇÏ¿© µ¥ÀÌÅͰ¡ À¯¹«¸¦ È®ÀÎ ÇÒ ¼ö µµ ÀÖ½À´Ï´Ù.
Ŭ¶óÀ̾ðÆ®Ãø ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace ClientSideSocket
{
class ClientClass
{
public static Socket socket;
public static byte[] getbyte = new byte[1024];
public static byte[] setbyte = new byte[1024];
public const int sPort = 5000;
[STAThread]
static void Main(string[] args)
{
string sendstring = null
string getstring = null
IPAddress serverIP = IPAddress.Parse("127.0.0.1");
IPEndPoint serverEndPoint = new IPEndPoint(serverIP,sPort);
socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
Console.WriteLine("-----------------------------------------------------");
Console.WriteLine(" ¼¹ö·Î Á¢¼ÓÀ» ½ÃÀÛÇÕ´Ï´Ù. [¿£Å͸¦ ÀÔ·ÂÇϼ¼¿ä] ");
Console.WriteLine("-----------------------------------------------------");
Console.ReadLine();
socket.Connect(serverEndPoint);
if (socket.Connected)
{ Console.WriteLine(">> Á¤»óÀûÀ¸·Î ¿¬°á µÇ¾ú½À´Ï´Ù.(Àü¼ÛÇÑ µ¥ÀÌÅ͸¦ ÀÔ·ÂÇØÁÖ¼¼¿ä)");
}
while(true)
{ Console.Write(">>");
sendstring = Console.ReadLine();
if(sendstring != String.Empty)
{
setbyte = Encoding.UTF7.GetBytes(sendstring);
socket.Send(setbyte,0,setbyte.Length,SocketFlags.None);
socket.Receive(getbyte,0,getbyte.Length,SocketFlags.None);
getstring = Encoding.UTF7.GetString(getbyte); Console.WriteLine(">>¼ö½ÅµÈ µ¥ÀÌÅÍ :{0} | ±æÀÌ{1}" , getstring , getstring.Length);
}
}
}
}
}
|
¼¹ö Ãø ¼Ò½º¸¦ À¯½ÉÈ÷ º¸¼Ì´Ù¸é ºñ½ÁÇÑ ºÎºÐÀÌ ¸¹´Ù´Â°ÍÀ» ¾Æ½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ¼¹öÃøÀ»
ÀÌÇØÇϼ̴ٸé Ŭ¶óÀ̾ðÆ®Ãøµµ ½±°Ô ÀÌÇØÇÏ½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.
class ClientClass
{
public static Socket socket;
public static byte[] getbyte = new byte[1024];
public static byte[] setbyte = new byte[1024];
public const int sPort = 5000;
|
¼¹öÃø¿¡¼ ¼±¾ðÇÑ º¯¼öµé°ú °°Àº ¸ñÀûÀ¸·Î ¾²ÀÏ Å¬¶óÀÌ¾ðÆ® º¯¼ö µéÀÔ´Ï´Ù. ÇѰ¡Áö Áý°í ³Ñ¾î°¥ °ÍÀº
sPort ºÎºÐÀÔ´Ï´Ù. ¼¹ö¿¡¼´Â 1 ~ 1024 Æ÷Æ®(½Ã½ºÅÛ¿¡¼ ÁöÁ¤µÈÆ÷Æ®)¸¦ ÇÇÇØ ÀÓÀ¸·Î ÁöÁ¤Çß½À´Ï´Ù¸¸,
Ŭ¶óÀÌ¾ðÆ®´Â ¼¹ö·ÎÀÇ Á¢¼ÓÀ» ÇØ¾ß Çϱ⠶§¹®¿¡ ¼¹öÃøÀÇ Æ÷Æ®¸¦ EndPoint Æ÷Æ®·Î ÀÔ·ÂÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù.
[STAThread]
static void Main(string[] args)
{
string sendstring = null
string getstring = null
IPAddress serverIP = IPAddress.Parse("127.0.0.1");
IPEndPoint serverEndPoint = new IPEndPoint(serverIP,sPort);
|
Console.Readline() À¸·Î ¼ö½ÅµÉ ¹®ÀÚ¿À» ÀúÀåÇÒ sendstring º¯¼ö¿Í ¼¹ö·ÎºÎÅÍ ¹ÞÀº byte ŸÀÔÀÇ
µ¥ÀÌÅ͸¦ ¹®ÀÚ¿·Î ÀúÀåÇÒ getstring º¯¼ö¸¦ °¢°¢ ¼±¾ðÇÏ¿´½À´Ï´Ù. ¼¹öÃø°ú ¸¶Âù°¡Áö·Î byte <-> string , string <-> byte º¯È¯ °úÁ¤Àº System.Text ³×ÀÓ½ºÆäÀ̽ºÀÇ Encdoing °´Ã¼¸¦ ÀÌ¿ëÇØ¼ º¯È¯
ÇÏ¿´½À´Ï´Ù. ¸¶Áö¸· 2ÁÙÀº ¸¹ÀÌ º» µíÇÑ ¼Ò½ºÀÔ´Ï´Ù. ±×·¸½À´Ï´Ù. ¼ÒÄÏÀÌ bind ÇÒ ¼¹öÃø EndPoint
ÀÎ ¿¬°á Á¾Á¡ÀÌ µÇ°Ú½À´Ï´Ù.
socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
Console.WriteLine("-----------------------------------------------------");
Console.WriteLine(" ¼¹ö·Î Á¢¼ÓÀ» ½ÃÀÛÇÕ´Ï´Ù. [¿£Å͸¦ ÀÔ·ÂÇϼ¼¿ä] ");
Console.WriteLine("-----------------------------------------------------");
Console.ReadLine();
socket.Connect(serverEndPoint);
if (socket.Connected)
{ Console.WriteLine(">> Á¤»óÀûÀ¸·Î ¿¬°á µÇ¾ú½À´Ï´Ù.(Àü¼ÛÇÑ µ¥ÀÌÅ͸¦ ÀÔ·ÂÇØÁÖ¼¼¿ä)");
}
|
IPv4 ¿Í TCP ÇüÅÂÀÇ ¼Ó¼ºÀ¸·Î ¼ÒÄÏÀ» »ý¼ºÇϰí, ¼¹öÃøÀ¸·Î Á¢¼ÓÇÒ EndPoint ¸¦ ¸Å°³ °´Ã¼·Î ³Ñ°Ü
Á¢¼ÓÀ» ½ÃµµÇÕ´Ï´Ù. À̶§ Á¢¼Ó ÇÏ´Â ½ÃÁ¡À» ±ÇÇÑÀ» À¯Àú¿¡°Ô ÁÖ±âÀ§ÇØ ¸Þ½ÃÁö¸¦ Ãâ·ÂÈÄ Console.ReadLine() ¸í·ÉÀ» ÁÖ¾î Àá½Ã ´ë±â ½ÃÄ×½À´Ï´Ù. ¿¬°áÀÌ ¿Ï·áµÇ¸é Socket °´Ã¼ÀÎ socket ÀÇ ¼Ó¼ºÁß Connected ¼Ó¼ºÀ» ÀÌ¿ëÇØ¼ Á¢¼ÓÀÌ ¿Ï·áµÇ¾ú´ÂÁö °Ë»çÇÕ´Ï´Ù. (Á¢¼ÓÀÌ Á¤»óÀûÀ¸·Î ÀÌ·ç¾î Á³À» °æ¿ì true ¸¦ ¸®ÅÏÇÕ´Ï´Ù.)
while(true)
{ Console.Write(">>"); sendstring =
Console.ReadLine();
if(sendstring !=
String.Empty)
{
setbyte = Encoding.UTF7.GetBytes(sendstring);
socket.Send(setbyte,0,setbyte.Length,SocketFlags.None);
socket.Receive(getbyte,0,getbyte.Length,SocketFlags.None);
getstring = Encoding.UTF7.GetString(getbyte); Console.WriteLine(">>¼ö½ÅµÈ µ¥ÀÌÅÍ :{0} | ±æÀÌ{1}" , getstring , getstring.Length);
}
}
|
Ŭ¶óÀÌ¾ðÆ® ºÎºÐ¿¡¼µµ ¹«ÇÑ ·çÇÁ·Î µ¹¸° ÀÌÀ¯°¡ Àִµ¥, äÆÃ°ú ºñ½ÁÇÑ È¿°ú·Î °è¼ÓÇØ¼ Å×½ºÆ® ÇØº¸±â À§ÇؼÀÔ´Ï´Ù. ·çÇÁ¸¦ µ¹¸é¼ sendstring = Console.ReadLine();ºÎºÐ¿¡ ¸ØÃç¼ »ç¿ëÀÚ ÀÔ·ÂÀ»
±â´Ù¸³´Ï´Ù.
setbyte =
Encoding.UTF7.GetBytes(sendstring);
»ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ µ¥ÀÌÅ͸¦ ´ã°íÀÖ´Â sendstring º¯¼ö³»¿ëÀ» Encoding °´Ã¼ÀÇ ¸Þ¼Òµå¸¦ ÀÌ¿ëÇØ¼ UTF7 Æ÷¸ËÀ¸·Î Byte¹è¿·Î ³Ñ±â´Â ¸ð½À´Ï´Ù. ÇѱÛÀ» UTF7 Æ÷¸ËÀ» ÀÌ¿ëÇØ¾ß ±úÁöÁö ¾Ê°í Á¦´ë·Î Àü¼ÛµË´Ï´Ù.
socket.Send(setbyte,0,setbyte.Length,SocketFlags.None); ·Î ÀÔ·ÂµÈ µ¥ÀÌÅ͸¦ ¼¹öÃøÀ¸·Î Àü¼ÛÇϸé
¼¹öÃø¿¡¼´Â ´Ù½Ã Ŭ¶óÀÌ¾ðÆ®·Î µÇµ¹·Áº¸³»¹Ç·Î ¹Ù·Î Receive ÇÏ¿© ¼¹ö·Î ºÎÅÍÀÇ ¼ö½ÅÀÌ Á¤»óÀûÀÎÁö
È®ÀÎ ÇÕ´Ï´Ù.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
À§¿Í °°ÀÌ ¼Ò½º¸¦ ÀÛ¼ºÇϼÌÀ¸¸é ÀÌÁ¦ ½ÇÇàÀ» ÇÕ´Ï´Ù.
ÀÚ~~ 3°¿¡¼ÀÇ ¼Ò½º¿Í °°ÀÌ ¼ö½Åµ¥ÀÌÅÍ ÀÌÀ¯ÀÇ Ãâ·Â ¹®ÀÚ¿ °úÀÇ »çÀ̰¡ ¸¹ÀÌ ¶³¾îÁø°ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀº ¼ö½Å/¹ß½Å ¹öÆÛ·Î »ç¿ëµÇ´Â byte ¹è¿ÀÇ Å©±â ¶§¹®Àε¥.. ¿ì¸®°¡ "hi" ¶ó°í ´ÜÁö 2byte
¸¸ ¹ß¼ÛÇߴµ¥ ¾Æ·¡¿Í °°ÀÌ..
Client.Receive(getByte,0,getByte.Length,SocketFlags.None);
0 ~ 1024 (getByte.Length) ¸¸ÅÀ» ¹ß¼ÛÇϰí, ¼ö½ÅÇϱ⠶§¹®¿¡.. ÀÌ·¯ÇÑ Çö»óÀÌ ¹ß»ýµÈ °ÍÀÔ´Ï´Ù.
Áï, 1024 byte Áß ¸Ç¾Õ¿¡´Â hi¶ó°í µ¥ÀÌÅͰ¡ µé¾î°¡Áö¸¸ ³ª¸ÓÁö ºÎºÐÀº ¸ðµÎ °ø¹éÀ¸·Î ÃʱâÈ µÈ °ÍÀÔ´Ï´Ù.(½ÇÁ¦·Î byte ¹è¿¾È¿¡´Â 0 À¸·Î ÃʱâÈ µË´Ï´Ù.)
ÀÚ ±×·³ ÀÏ´Ü Àú·¯ÇÑ Çö»óÀÌ ¹ß»ýµÇÁö ¾Êµµ·Ï ¼Ò½º¸¦ ¼öÁ¤ÇØ º¸°Ú½À´Ï´Ù.
¼¹ö¿Í Ŭ¶óÀÌ¾ðÆ® ¼Ò½º¿¡ ¾Æ·¡ÀÇ ¸Þ¼Òµå¸¦ Ãß°¡ÇÕ´Ï´Ù.
public static int byteArrayDefrag(byte[] sData)
{ int endLength =
0; for(int
i=
0;i < sData.Length ; i++)
{
if((byte)sData[i] != (byte)0)
{
endLength =i;
}
}
return endLength;
}
|
ÀÌ ¸Þ¼Òµå°¡ ÇÏ´ÂÀÏÀº À§ÀÇ ¹®Á¦Á¡À» ÇØ°áÇϱâ À§ÇÑ ¸Þ¼ÒµåÀÔ´Ï´Ù. ¸Þ¼ÒµåÀÇ ½Ã±×³ÊÃĸ¦ º¸¸é
byte ¹è¿ÀÇ type À» °®´Â sData º¯¼ö·Î µ¥ÀÌÅÍ ¹è¿À» ³Ñ±é´Ï´Ù. ±×·³ ³»ºÎ¿¡¼´Â for ¹®À»
sData °¡ ¹ÞÀº ¹è¿ÀÇ sData.Length ±îÁö µ¹¸é¼ (byte)sData[i] != (byte)0 À϶§ ±îÁö Áï,
»ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ µ¥ÀÌÅͰ¡ ¾Æ´Ñ byte ¹è¿ÀÇ ÃʱâÈ ¹®ÀÚÀÎ (byte)0 ÀÌ ³ª¿À´Â ¹è¿ÀÇ Ã·ÀÚ¸¦
¾Ë¾Æ³»¿© int ÇüÅ·Π¸®ÅÏÇÏ°Ô µË´Ï´Ù.
±×¸®°í ¼¹öÃøÀÇ ¼Ò½º¸¦ ¾Æ·¡¿Í °°ÀÌ ¼öÁ¤ÇÕ´Ï´Ù.
[¿øº»¼Ò½º] |
if (stringbyte != String.Empty)
{
Console.WriteLine("¼ö½Åµ¥ÀÌÅÍ:{0} | ±æÀÌ:{1}",stringbyte,stringbyte.Length); setByte =
Encoding.UTF7.GetBytes(stringbyte);
Client.Send(setByte,0,setByte.Length,SocketFlags.None);
}
|
[¼öÁ¤ÈÄ ¼Ò½º] |
if (stringbyte != String.Empty)
{
int getValueLength = 0; getValueLength =
byteArrayDefrag(getByte); stringbyte =
Encoding.UTF7.GetString(getByte,0,getValueLength+1);
Console.WriteLine("¼ö½Åµ¥ÀÌÅÍ:{0} | ±æÀÌ:{1}",stringbyte,getValueLength+1); setByte =
Encoding.UTF7.GetBytes(stringbyte);
Client.Send(setByte,0,setByte.Length,SocketFlags.None);
}
|
byteArrayDefrag ¸Þ¼Òµå·ÎºÎÅÍ ¼ö½ÅÇÑ return endLength; °ªÀ» getValueLength ·Î ¼ö½ÅÇÏ¿©,
stringbyte =
Encoding.UTF7.GetString(getByte,0,getValueLength+1);
¹è¿ÀÇ ¹üÀ§¸¦ ÁöÁ¤ÇÏ¿© string À¸·Î ¸®ÅÏÇϱâÀ§ÇØ ¿À¹ö·ÎµåµÈ ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.
stringbyte =
Encoding.UTF7.GetString(getByte,0,getValueLength+1);
Console.WriteLine("¼ö½Åµ¥ÀÌÅÍ:{0} | ±æÀÌ:{1}",stringbyte,getValueLength+1);
¹ØÁÙ ±×Àº ºÎºÐÀ» º¸¸é +1À» Çߴµ¥ byteArrayDefrag ¸Þ¼Òµå°¡ ¸®ÅÏÇÏ´Â °ªÀº À§¿¡¼ ¼³¸íÇÑ °Íó·³
¹è¿ÀÇ Ã·ÀÚ À̱⠶§¹®¿¡ +1À» ÇØÁá½À´Ï´Ù. ¹è¿Àº 0ºÎÅÍ ½ÃÀÛÇϱ⠶§¹®¿¡ "hi" ¶ó°í 2¹ÙÀÌÆ®¸¦
ÀÔ·ÂÇÒ °æ¿ì ¾Æ·¡¿Í °°ÀÌ 2byte°¡ ÀÔ·Â µÇ¾úÁö¸¸ ÷ÀÚ´Â ±æÀÌÀÇ -1 À» °¡¸®Å°°í Àֱ⠶§¹®¿¡
+1À» ÇØÁØ °ÍÀÔ´Ï´Ù.
sData ¹è¿ ÷ÀÚ |
0 |
1 |
2 |
3 |
4 |
ÀÔ·ÂµÈ µ¥ÀÌÅÍ |
h |
i |
(byte)0 |
(byte)0 |
(byte)0 |
Ŭ¶óÀÌ¾ðÆ® ºÎºÐµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù. À§ÀÇ ¸Þ¼Òµå¸¦ Ãß°¡ÇÏ°í ¾Æ·¡¿Í °°ÀÌ Å¬¶óÀÌ¾ðÆ® ºÎºÐµµ ¼öÁ¤ÇØ ÁÝ´Ï´Ù.
[¿øº»¼Ò½º] |
if(sendstring != String.Empty)
{ setbyte =
Encoding.UTF7.GetBytes(sendstring);
socket.Send(setbyte,0,setbyte.Length,SocketFlags.None);
socket.Receive(getbyte,0,getbyte.Length,SocketFlags.None); getstring =
Encoding.UTF7.GetString(getbyte); Console.WriteLine(">>¼ö½ÅµÈ µ¥ÀÌÅÍ :{0} | ±æÀÌ{1}" , getstring , getstring.Length);
}
|
[¼öÁ¤ÈÄ ¼Ò½º] |
if(sendstring != String.Empty)
{
int getValueLength = 0; setbyte =
Encoding.UTF7.GetBytes(sendstring);
socket.Send(setbyte,0,setbyte.Length,SocketFlags.None);
socket.Receive(getbyte,0,getbyte.Length,SocketFlags.None); getValueLength =
byteArrayDefrag(getbyte); getstring =
Encoding.UTF7.GetString(getbyte,0,getValueLength+1);
Console.WriteLine("(¼ö½ÅµÈ µ¥ÀÌÅÍ :{0} | ±æÀÌ{1})" , getstring , getValueLength+1);
}
|
ÀÌÁ¦ ¼öÁ¤µÈ ¼Ò½º·Î ½ÇÇàÇØ º¸°Ú½À´Ï´Ù.
¼öÁ¤µÇ±âÀü °ú º¸¸é ±ò²ûÇÏ°Ô ¼Û/¼ö½Å µÇ´Â ¸ð½ÀÀ» º¸½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.
ÀÚ ÀÌÁ¦ ¸ðµç ºÎºÐÀÌ È®ÀÎÀÌ ³¡³ª°í, ÇÁ·Î±×·¥À» Á¾·áÇØ º¸°Ú½À´Ï´Ù. Ŭ¶óÀ̾ðÆ®
ÃøÀ» ¸ÕÀú Á¾·áÇϰԵǸé, ¾Æ·¡¿Í °°Àº ¿¹¿Ü¸¦ ¸¸³ª°ÔµÇ´Âµ¥, .Net ¿¡¼´Â ÀÌ·¯Çå ¿À·ù¿¡ ´ëÇØ
¸ðµÎ ¿¹¿Ü·Î 󸮵Ǹç, ½ÇÁ¦ÀûÀ¸·Î ÇØ´çµÇ´Â ¿¹¿ÜŬ·¡½º¸¦ °¡Áö°í ÀÖ½À´Ï´Ù.
À§¿¡¼ Àá±ñ ¼³¸íµå·ÈÁö¸¸, ¼¹öÃø ÇÁ·Î±×·¥Àº Á¢¼ÓÇÑ Å¬¶óÀ̾ðÆ®ÀÇ ¼ÒÄϺκР¹«ÇÑ·çÇÁ¸¦ µ¹¸é¼
Æú¸µÇÏ°Ô µË´Ï´Ù. Áï, ¼¹öÃø¿¡¼ ¹«ÇÑ ·çÇÁ¸¦ µ¹¸ç, Ŭ¶óÀ̾ðÆ®ÀÇ ¼ÒÄÏÀ» Æú¸µÇϰí ÀÖ´Â »óÅ¿¡¼Å¬¶óÀ̾ðÆ®Ãø ÇÁ·Î±×·¥ÀÌ Á¾·á°¡ µÇ¸é¼ SocketException ÀÌ ¹ß»ýÇϰí, line 37 ¿¡¼ ¿¹¿Ü¸¦ ¹ß»ý½ÃÄ×½À´Ï´Ù. ¼Ò½º¸¦ º¸¸é
line 37 : Client.Receive(getByte,0,getByte.Length,SocketFlags.None);
¿¹»ó´ë·Î Ŭ¶óÀ̾ðÆ®ÂÊÀ» º¸°í ÀÖ´ø ºÎºÐÀÔ´Ï´Ù. ¿©·¯ºÐµéÀÌ C# À» Á¶±Ý °øºÎÇØ º¸¼Ì´Ù¸é ¿¹¿Ü¿¡ ´ëÇØ
µé¾îº¸¼ÌÀ» °ÍÀ̰í À̺κп¡ ´ëÇØ¼ ½±°Ô ÇØ°á ÇÏ½Ç ¼ö ÀÖÀ¸¸®¶ó »ý°¢ÀÌ µË´Ï´Ù. ±×·³ ÀÌ·¯ÇÑ °©ÀÛ½º·±
¿À·ù¸¦ ¿¹¿Ü·Î ¸Å²ô·´°Ô ó¸®ÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
¼¹öÃø ¼Ò½º¸¦ ¾Æ·¡¿Í °°ÀÌ ¼öÁ¤ÇÕ´Ï´Ù. Àüü ºÎºÐÀ» ¸ðµÎ °¨½Ñ´Ù°í »ý°¢ÇÏ½Ã¸é µË´Ï´Ù.
try
{
Server= new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
Server.Bind(serverEndPoint);
Server.Listen(10);
if(Client.Connected)
{
- Áß°£ »ý·« -
}
}
catch(System.Net.Sockets.SocketException socketEx)
{
Console.WriteLine("[Error]:{0}",socketEx.Message);
}
catch(System.Exception commonEx)
{
Console.WriteLine("[Error]:{0}",commonEx.Message);
}
finally
{
Server.Close();
Client.Close();
}
|
ÀÚ~~ ´Ù½Ã Çѹø º¹½ÀÇÏ´Â Àǹ̿¡¼ try ~ catch ±¸¹®Àº À̿Ͱ°ÀÌ ¿¹¿Ü°¡ ¹ß»ýÇϱ⠽¬¿î ºÎºÐ¿¡
ÇÁ·Î±×·¡¸Ó°¡ ¿¹¿Ü¸¦ Çڵ鸵À» Çϱâ À§ÇØ »ç¿ëµË´Ï´Ù. À§ÀÇ ¼Ò½º¸¦ Àá±ñ »ìÆìº¸¸é
2°³ÀÇ Catch ±¸¹®À» º¼ ¼ö ÀÖ½À´Ï´Ù. À§¿¡¼ ¾Æ·¡·Î ³»·Á¿À´Â catch Àϼö·Ï ÀϹÝÀûÀ̾î¾ß ÇÕ´Ï´Ù.
¹Ý´ë·Î ¸»Çϸé, ¿¹¿Ü°¡ ¹ß»ýÇϱ⠽¬¿î ExceptionºÎÅÍ catch Àâ¾Æ³»Áà¾ß ±×¿¡´ëÇÑ È®½ÇÇÑ Ã³¸®³ª
¸Þ½ÃÁö¸¦ À¯Àú¿¡°Ô º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù. ÀÏ´Ü Àú´Â ¿¹¿Ü°´Ã¼°¡ °¡Áö°í ÀÖ´Â ÀϹÝÀûÀº ¿À·ù ¸Þ½ÃÁö¸¦
º¸¿©ÁÖµµ·Ï Çß½À´Ï´Ù. ±×¸®°í finally ºÎºÐ¿¡¼ Á¾·áÀü¿¡ ¼ÒÄϰ´Ã¼¸¦ ¸ðµÎ close ÇÏ¿© °´Ã¼ÀÇ »ç¿ëÀÌ
³¡³ª°í ¸®¼Ò½º¸¦ ¹ÝȯÇÕ´Ï´Ù. GC ¿¡ ÀÇÇØ °ü¸® µÇ°ÚÁö¿ä.
ÀÚ ÀÌÁ¦ ¿À·ùµµ ó¸® ±ò²ûÇÏ°Ô Ã³¸® Çß½À´Ï´Ù.
±×·±µ¥ ÇѰ¡Áö ¹®Á¦Á¡ÀÌ ¶Ç ³²¾Ò½À´Ï´Ù. ¾Æ·¡ ±×·³À» º¸½Ã¸é..
óÀ½ ¹Ú½ºÇÑ ºÎºÐÀ» º¸½Ã¸é "°¡³ª´Ù¶ó¸¶¹Ù" ¶ó°í ¼¹ö·Î Àü¼ÛÇÏ°í ¼ö½Å±îÁö È®ÀÎÇÏ¿´½À´Ï´Ù.
±×´ÙÀ½ ´Ù½Ã "°¡³ª" ¶ó°í Àü¼ÛÇÏ¸é ¼¹öÃøÀ¸·ÎºÎÅÍ µÇµ¹¾Æ¿Â µ¥ÀÌÅÍÀÇ °¡³ªµÞºÎºÐ¿¡(ÁÙÄ£ºÎºÐ)
¾²·¹±â °ª °°Àº°ÍÀÌ Æ÷ÇԵǾîÀú ³ª¿É´Ï´Ù. Áï, ÀÌ¹Ì Àü¿¡ ¹ß¼ÛÇÑ µ¥ÀÌÅͰ¡ byte ¹è¿¿¡ ³²¾ÆÀÖ¾î,
¸ÕÀú º¸³½ °ªº¸°¡ ª¾ÆÁö¸é °ãÃĹö·Á¼ Àú·±Çö»óÀÌ ³ª¿É´Ï´Ù. ÈùÆ®¸¦ µå·ÈÀ¸´Ï ½º½º·Î ÇØ°á
°¡´ÉÇϽŠºÐµéÀº Çѹø µµÀüÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù.^^ 5°¿¡¼´Â ÇÏÀ§¼ÒÄÏÀ¸·Î UDP Åë½ÅÀÌ °¡´ÉÇϵµ·Ï °£´ÜÇÏ°Ô ÀÛ¼ºÇغ» ÈÄ °í¼öÁØ Å¬·¡½ºÀÎ TcpListener ¿Í TcpClient µî¿¡ ´ëÇØ ¾Ë¾Æº¸°Ú½À´Ï´Ù.
´ë¶ô ¼ÒÄÏ¿¡ ´ëÇÑ ¿Ïº®ÇÏÁø ¾ÊÁö¸¸, ¾î´ÀÁ¤µµ °³³äÀ» Àâ¾ÒÀ¸¸®¶ó »ý°¢ÀÌ µì´Ï´Ù. ´ÙÀ½ °Á ºÎÅÍ´Â ÀÌ·¯ÇÑ ±âº»À» Åä´ë·Î µÇ±â ¶§¹®¿¡ Áß¿äÇÑ ³»¿ëÀÌ´Ï ²À º¹½ÀÇØº¸½Ã°í ÄÚµùÀ» Çѹø¾¿ ÇØº¸½Ã±â ¹Ù¶ø´Ï´Ù.
°¥±æÀÌ »ó´çÈ÷ ¸Ù´Ï´Ù. ³¡±îÁö °Á ÀоîÁּż °¨»çÇÕ´Ï´Ù.
Back
|