TcpClient ´Ý±â¸¦ ¸Þ¼­µå´Â ±âº» TCP ¿¬°áÀ» ´Ý±â

±â¼ú ÀÚ·á: 821625 - ÀÌ ¹®¼­°¡ Àû¿ëµÇ´Â Á¦Ç° º¸±â.
ÀÌ ¹®¼­¿¡¼­´Â ´ÙÀ½ Microsoft .NET Framework Ŭ·¡½º ¶óÀ̺귯¸®ÀÇ ³×ÀÓ½ºÆäÀ̽º¸¦ ÂüÁ¶ÇÕ´Ï´Ù.
  • System.Net
  • System.Net.Sockets
¸ðµÎ È®´ë | ¸ðµÎ Ãà¼Ò

ÀÌ ÆäÀÌÁö¿¡¼­

Çö»ó

TcpClient ´Ý±â ¸¦ ¸Þ¼­µå¸¦ È£ÃâÇÒ ¶§ .NET Framework Ŭ·¡½º ¶óÀ̺귯¸®ÀÇ TcpClient.Close ¹æ¹ý "Ç׸ñ¿¡ ¼³¸íµÈ ´ë·Î ´Ý¾Æ¾ß ±âº» TCP ¿¬°áÀÌ ¿¹»óÇÑ ¼³¸í¼­¸¦. ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½ Microsoft À¥ »çÀÌÆ®¸¦ Âü°íÇϽñ⠹ٶø´Ï´Ù:
http://msdn2.microsoft.com/en-us/library/system.net.sockets.tcpclient.close(vs.71).aspx

ÇØ°á ¹æ¹ý

ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ·Á¸é TcpClient GetStream ¸Þ¼­µå°¡ ¹ÝȯÇÏ´Â ¿¬°áµÈ NetworkStream °³Ã¼¸¦ ´Ý½À´Ï´Ù.

Ãß°¡ Á¤º¸

¹®Á¦¸¦ ÀçÇöÇÏ´Â ¹æ¹ý

  1. ¸Þ¸ðÀå°ú °°Àº ÅØ½ºÆ® ÆíÁý±â¿¡¼­ ´ÙÀ½ »ùÇà Äڵ带 ºÙ¿© ³Ö½À´Ï´Ù.
    using System;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    
    class Server
    {
    	static void Main(string[] args)
    	{
    		try
    		{
    			const int portNumber = 10000;
    			TcpListener tcpListener = new TcpListener(IPAddress.Loopback, portNumber);
    
    			tcpListener.Start();
    
    			Console.WriteLine("Waiting for a connection....");
    
    			//Accept the pending client connection, and then return a TcpClient that is initialized for communication.
    			TcpClient tcpClient = tcpListener.AcceptTcpClient();
    			Console.WriteLine("Connection accepted.");
    
    			NetworkStream networkStream = tcpClient.GetStream();
    
    			string responseString = "You have successfully connected to me\n";
    
    			Byte[] sendBytes = Encoding.ASCII.GetBytes(responseString.ToCharArray());
    			networkStream.Write(sendBytes, 0, sendBytes.Length);
    
    			Console.Write("Message Sent /> : " + responseString);
    
    			//Close networkStream and TcpClient.
    			//networkStream.Close();
    			tcpClient.Close();
    
    			//Wait until you can see that the connection is closed in the client.
    			Console.ReadLine();
                                
    			//Close the listener.
    			tcpListener.Stop();
    
    		}
    		catch (Exception e) 
    		{
    			Console.WriteLine(e.ToString());
    		}   
    	}
    }
  2. ·Î Server.cs ÆÄÀÏÀ» ÀúÀåÇϽʽÿÀ.
  3. ½ÃÀÛ À» ´©¸£°í, ÇÁ·Î±×·¥, Visual Studio .NET (Microsoft Visual Studio .NET 2002) ¶Ç´Â Microsoft Visual Studio .NET 2003, Visual Studio .NET µµ±¸ Â÷·Ê·Î °¡¸®Å² ´ÙÀ½ Visual Studio .NET ¸í·É ÇÁ·ÒÇÁÆ® ¶Ç´Â Visual Studio .NET 2003 ¸í·É ÇÁ·ÒÇÁÆ® ¸¦ ´©¸¨´Ï´Ù.
  4. ¸í·É ÇÁ·ÒÇÁÆ®¿¡¼­ ´ÙÀ½ ¸í·ÉÀ» ÀÔ·ÂÇÑ ´ÙÀ½ Enter ۸¦ Server.cs ÄÄÆÄÀÏÇÏ·Á¸é:
    csc server.cs
  5. ¸í·É ÇÁ·ÒÇÁÆ®¿¡¼­ ´ÙÀ½ ¸í·ÉÀ» ÀÔ·ÂÇÑ ´ÙÀ½ Enter ۸¦ ´©¸¨´Ï´Ù.
    server.exe ½ÃÀÛ
  6. ¸í·É ÇÁ·ÒÇÁÆ®¿¡¼­ ´ÙÀ½ ¸í·ÉÀ» ÀÔ·ÂÇÑ ´ÙÀ½ Enter ۸¦ ´©¸¨´Ï´Ù.
    netstat -p TCP - a
    TCP ¿¬°á Æ÷Æ®¸¦ 10000 ¿­¸®°í LISTENING »óÅ¿¡ ¿¬°áÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.
  7. ¸Þ¸ðÀå°ú °°Àº ÅØ½ºÆ® ÆíÁý±â¿¡¼­ ´ÙÀ½ »ùÇà Äڵ带 ºÙ¿© ³Ö½À´Ï´Ù.
    using System;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    
    class Client
    {
    	static void Main(string[] args)
    	{
    		try
    		{
    			TcpClient tcpClient = new TcpClient();
    		
    			tcpClient.Connect(IPAddress.Loopback, 10000);
    			NetworkStream networkStream = tcpClient.GetStream();
    
    			if(networkStream.CanWrite && networkStream.CanRead)
    			{
    				// Reads the NetworkStream to a byte buffer.
    				byte[] bytes = new byte[38];
    				networkStream.Read(bytes, 0, bytes.Length);
    				
    				// Returns to the console the data that is received from the host.
    				string returndata = Encoding.ASCII.GetString(bytes);
    				Console.Write("This is what the host returned to you: " + returndata.TrimEnd(new char[] {' '}));
    				Console.ReadLine();
    				networkStream.Close();
    				tcpClient.Close();
    			}
    		}
    		catch (Exception e ) 
    		{
    			Console.WriteLine(e.ToString());
    		}
    	}
    }
  8. ·Î Client.cs ÆÄÀÏÀ» ÀúÀåÇϽʽÿÀ.
  9. ¸í·É ÇÁ·ÒÇÁÆ®¿¡¼­ ´ÙÀ½ ¸í·ÉÀ» ÀÔ·ÂÇÑ ´ÙÀ½ Enter ۸¦ ´­·¯ Client.cs ºôµå:
    csc client.cs
  10. ¸í·É ÇÁ·ÒÇÁÆ®¿¡¼­ ´ÙÀ½ ¸í·ÉÀ» ÀÔ·ÂÇÑ ´ÙÀ½ Enter ۸¦ ´©¸¨´Ï´Ù.
    client.exe ½ÃÀÛ
  11. ¸í·É ÇÁ·ÒÇÁÆ®¿¡¼­ ´ÙÀ½ ¸í·ÉÀ» ÀÔ·ÂÇÑ ´ÙÀ½ Enter ۸¦ ´©¸¨´Ï´Ù.
    netstat -p TCP - a
    TCP ¿¬°áÀÌ ¿­¸° ¿¬°áÀ» ESTABLISHED »óÅ¿¡ ÀÖÀ½À» ¾Ë ¼ö ÀÖ½À´Ï´Ù.

    ¼­¹ö ÂÊ ¿¬°áÀ» ´Ý¾Ò±â ¶§¹®¿¡ ¼­¹ö ÂÊ ¼ÒÄÏ ¿¬°áÀ» FIN_WAIT_2 »óÅ¿¡ ÀÖ¾î¾ß Çϸç Ŭ¶óÀÌ¾ðÆ® ÂÊ ¼ÒÄÏ ¿¬°áÀ» CLOSE_WAIT »óÅ¿©¾ß ÇÕ´Ï´Ù. ÀÌ µ¿ÀÛÀ» ¼³¸íÇÏ´Â RFC 793 - "Àü¼Û Á¦¾î ÇÁ·ÎÅäÄÝ Darpa ÀÎÅÍ³Ý ÇÁ·Î±×·¥ ÇÁ·ÎÅäÄÝ »ç¾ç."
  12. ´ÙÀ½ ÁÙÀ» uncommenting 1 ´Ü°è¿¡¼­ ÄÚµå º¯°æ:
    //networkStream.Close();
    3-9´Ü°è ¹Ýº¹ÇÕ´Ï´Ù.

    FIN_WAIT_2 »óÅ¿¡ ¼­¹ö ÂÊ ¼ÒÄÏ ¿¬°á ¹× Ŭ¶óÀÌ¾ðÆ® ÂÊ ¼ÒÄÏ ¿¬°áÀ» CLOSE_WAIT »óÅ¿¡ ÀÖ½À´Ï´Ù. ¼­¹ö ÂÊ¿¡¼­ ¿¬°áÀÌ ´ÝÇô Àֱ⠶§¹®¿¡ ÀÌ ¹®Á¦°¡ ¹ß»ýÇÕ´Ï´Ù.

ÂüÁ¶

TcpClient Ŭ·¡½º¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½ Microsoft À¥ »çÀÌÆ®¸¦ ¹æ¹®ÇϽʽÿÀ.
http://msdn2.microsoft.com/en-us/library/system.net.sockets.tcpclient(vs.71).aspx

¼Ó¼º

±â¼ú ÀÚ·á: 821625 - ¸¶Áö¸· °ËÅä: 2007³â 5¿ù 17ÀÏ ¸ñ¿äÀÏ - ¼öÁ¤: 2.4
º» ¹®¼­ÀÇ Á¤º¸´Â ´ÙÀ½ÀÇ Á¦Ç°¿¡ Àû¿ëµË´Ï´Ù.
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Ű¿öµå:?
kbmt kbclientserver kbapi kbprogramming kbprb KB821625 KbMtko
±â°è ¹ø¿ªµÈ ¹®¼­
Áß¿ä: º» ¹®¼­´Â Àü¹® ¹ø¿ª°¡°¡ ¹ø¿ªÇÑ °ÍÀÌ ¾Æ´Ï¶ó Microsoft ±â°è ¹ø¿ª ¼ÒÇÁÆ®¿þ¾î·Î ¹ø¿ªÇÑ °ÍÀÔ´Ï´Ù. Microsoft´Â ¹ø¿ª°¡°¡ ¹ø¿ªÇÑ ¹®¼­ ¹× ±â°è ¹ø¿ªµÈ ¹®¼­¸¦ ¸ðµÎ Á¦°øÇϹǷΠMicrosoft ±â¼ú ÀÚ·á¿¡ ÀÖ´Â ¸ðµç ¹®¼­¸¦ Çѱ۷ΠÁ¢ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ±â°è ¹ø¿ª ¹®¼­°¡ Ç×»ó ¿Ïº®ÇÑ °ÍÀº ¾Æ´Õ´Ï´Ù. µû¶ó¼­ ±â°è ¹ø¿ª ¹®¼­¿¡´Â ¸¶Ä¡ ¿Ü±¹ÀÎÀÌ Çѱ¹¾î·Î ¸»ÇÒ ¶§ ½Ç¼ö¸¦ ÇÏ´Â °Íó·³ ¾îÈÖ, ±¸¹® ¶Ç´Â ¹®¹ý¿¡ ¿À·ù°¡ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. Microsoft´Â ³»¿ë»óÀÇ ¿À¿ª ¶Ç´Â Microsoft °í°´ÀÌ ÀÌ·¯ÇÑ ¿À¿ªÀ» »ç¿ëÇÔÀ¸·Î½á ¹ß»ýÇÏ´Â ºÎ Á¤È®¼º, ¿À·ù ¶Ç´Â ¼ÕÇØ¿¡ ´ëÇØ Ã¥ÀÓÀ» ÁöÁö ¾Ê½À´Ï´Ù. Microsoft´Â ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ ±â°è ¹ø¿ª ¼ÒÇÁÆ®¿þ¾î¸¦ ÀÚÁÖ ¾÷µ¥ÀÌÆ®Çϰí ÀÖ½À´Ï´Ù.

Çǵå¹é º¸³»±â