본문 바로가기
네트워크

C# TCP 소켓통신 Server

by violetoz 2013. 4. 25.

using System;

using System.Net;

using System.Net.Sockets;

using System.Text;


namespace ToyServer

{

    class Class1

    {

        [STAThread]

        static void Main(string[] args)

  {

   //TCP Echo Server


   //1. 종단점

   IPAddress ip = IPAddress.Parse("127.0.0.1");

   IPEndPoint endPoint = new IPEndPoint(ip,5000);


   //2. 수신 소켓

   Socket listenSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);


   //3. 바인드

   listenSocket.Bind(endPoint);

   listenSocket.Listen(5);


   //4. 접속 대기

   Console.WriteLine("클라이언트의 연결을 기다리는 중입니다.");

   Socket clientSocket = listenSocket.Accept();

   Console.WriteLine("클라이언트와 연결 성공");


   try

   {

    while(true)

    {

    

     Console.WriteLine("상대방 종점값 : "+clientSocket.RemoteEndPoint.ToString());

     Console.WriteLine("자신의 종점값 : "+clientSocket.LocalEndPoint.ToString());


     //5. 데이터 수신

     Console.WriteLine("클라이언트 문자열을 기다리는중..");

     byte[] receiveBuffer = new byte[512];

     int length = clientSocket.Receive(receiveBuffer,receiveBuffer.Length,SocketFlags.None);


     //6. 디코딩

     string result = Encoding.UTF8.GetString(receiveBuffer,0,length);

     Console.WriteLine("클라이언트가 보낸 문자열 : " + result);


     //7. 에코

     Console.WriteLine("문자열을 에코시킵니다.");

     byte[] sendBuffer = Encoding.UTF8.GetBytes(result);

     clientSocket.Send(sendBuffer,0,sendBuffer.Length,SocketFlags.None);

    }

   }

   catch

   {

    Console.WriteLine("===============================");

    Console.WriteLine("클라이언트가 접속을 끊었습니다.");

    Console.WriteLine("===============================");

   }

  }

    }

}