블로그 이미지
따시쿵

calendar

1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Notice

2014. 12. 23. 11:51 C# with TCP/IP

프로그램 설명


서버가 listen 상태에서 클라이언트로부터 접속이 이루어지면 "hello Client" 메시지를 클라이언트에 전송하고, 클라이언트로부터 전송 된 메시지를 화면에 출력합니다.


클라이언트는 서버에 접속 한 후 사용자의 입력을 기달리는 프롬프트를 화면에 출력하고, 사용자가 입력하는 메시지를 서버에 전송하고 서버로부터 받은 받은 메시지 "hello Client" 화면에 보여줍니다.



실행 후




메시지 전송 후




프로그램 작성 순서


1. 소켓과 관련한 네임스페이스를 서버/클라이언트 모두에 포함 시킵니다.

using System.Net;
using System.Net.Sockets;
2. 서버 프로그램

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

            sck.Bind(new IPEndPoint(0, 1994));
            sck.Listen(0);

            Socket acc = sck.Accept();

            byte[] buffer = Encoding.UTF8.GetBytes("Hello Client");
            acc.Send(buffer, 0, buffer.Length, SocketFlags.None);

            buffer = new byte[acc.SendBufferSize];
            int rec = acc.Receive(buffer, 0, buffer.Length, SocketFlags.None);
            
            Array.Resize(ref buffer, rec);

            Console.WriteLine("Received: {0}", Encoding.UTF8.GetString(buffer));

            sck.Close();
            acc.Close();

            Console.Read();
3. 클라이언트 프로그램

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

            IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1994);
            sck.Connect(endPoint);

            Console.Write("Enter Message: ");
            string msg = Console.ReadLine();
            byte[] msgBuffer = Encoding.UTF8.GetBytes(msg);
            sck.Send(msgBuffer, 0, msgBuffer.Length, SocketFlags.None);

            byte[] buffer = new byte[255];
            int rec = sck.Receive(buffer, 0, buffer.Length, SocketFlags.None);

            Array.Resize(ref buffer, rec);

            Console.WriteLine("Recevied: {0}", Encoding.UTF8.GetString(buffer));

            Console.Read();


posted by 따시쿵