본문 바로가기
네트워크

C# TCP 소켓통신

by violetoz 2013. 4. 25.

using System;

using System.Net;

using System.Net.Sockets;

using System.Text;


namespace ToyClient

{

    class Class1

    {

        [STAThread]

        static void Main(string[] args)

  {

   try

   {

    //TCP Echo Client


    //1. 종단점 생성

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

    IPEndPoint endPoint = new IPEndPoint(ip,5000);


    //2. TCP Socket 생성

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


    //3. 연결하기

    Console  .Write  ("엔터를 치시면 서버와 연결됩니다.");

    Console.ReadLine();

    socket.Connect(endPoint);


    //4. 데이터 송수신

    if (socket.Connected)//서버측에서 소켓이 만들어져 있는지 확인

    {

     while(true)

     {

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

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


      Console.Write  ("보낼 문자열 : ");

      string input = Console.ReadLine();

      byte[] inputBuffer = Encoding.UTF8.GetBytes(input);

      //송신

      socket.Send(inputBuffer,0,inputBuffer.Length,SocketFlags.None);


      Console.WriteLine("에코 기다리는중..");


      //수신

      byte[] receiveBuffer = new byte[512];

      socket.Receive(receiveBuffer,0,receiveBuffer.Length,SocketFlags.None);


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

      Console.WriteLine("받은 문자열 : " + result);

     }

     socket.Close();

    }

    else

    {

     Console.WriteLine("소켓 연결 실패!!");

    }

   }


   catch(Exception e)

   {

    Console.WriteLine("오류 발생 : " + e.Message);

   }

  }

    }

}