Simple Echo Client-Server in C Sharp


Lâu lâu không động đến lập trình socket, giờ nghịch chút đồng thời tìm hiểu thêm về C# luôn vậy :cheers:
Bắt đầu với chương trình Echo server theo mô hình Client-server cho đơn giản :D
server(Program.cs)

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;


namespace SimpleServer
{
    class Program
    {
        static void Main(string[] args)
        {
               int recv;
   byte[] data = new byte[1024];
   IPEndPoint ipep = new IPEndPoint(IPAddress.Any,
               9050);
   Socket newsock = new
     Socket(AddressFamily.InterNetwork,
           SocketType.Stream, ProtocolType.Tcp);
   newsock.Bind(ipep);
   newsock.Listen(10);
   Console.WriteLine("Waiting for a client...");
   Socket client = newsock.Accept();
   IPEndPoint clientep =
          (IPEndPoint)client.RemoteEndPoint;
   Console.WriteLine("Connected with {0} at port {1}",
           clientep.Address, clientep.Port);
  
   string welcome = "Welcome to my test server";
   data = Encoding.ASCII.GetBytes(welcome);
   client.Send(data, data.Length,
            SocketFlags.None);
   while(true)
   {
     data = new byte[1024];
     recv = client.Receive(data);
     if (recv == 0)
      break;
   
     Console.WriteLine(
         Encoding.ASCII.GetString(data, 0, recv));
     client.Send(data, recv, SocketFlags.None);
   }
   Console.WriteLine("Disconnected from {0}",
            clientep.Address);
   client.Close();
   newsock.Close();
  

        }
    }
}

Client(Program.cs)

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;


namespace SimpleClient
{
    class Program
    {
   static void Main(string[] args)
        {
   byte[] data = new byte[1024];
   string input, stringData;
   IPEndPoint ipep = new IPEndPoint(
           IPAddress.Parse("127.0.0.1"), 9050);
   Socket server = new Socket(AddressFamily.InterNetwork,
           SocketType.Stream, ProtocolType.Tcp);
   try
   {
     server.Connect(ipep);
   } catch (SocketException e)
   {
     Console.WriteLine("Unable to connect to server.");
     Console.WriteLine(e.ToString());
     return;
   }
   int recv = server.Receive(data);
   stringData = Encoding.ASCII.GetString(data, 0, recv);
   Console.WriteLine(stringData);
   while(true)
   {
     input = Console.ReadLine();
     if (input == "exit")
      break;
     server.Send(Encoding.ASCII.GetBytes(input));
     data = new byte[1024];
     recv = server.Receive(data);
     stringData = Encoding.ASCII.GetString(data, 0, recv);
     Console.WriteLine(stringData);
   }
   Console.WriteLine("Disconnecting from server...");
   server.Shutdown(SocketShutdown.Both);
   server.Close();
  }

    }
}

Ta cod thể chạy 2 chương trình để thử hoặc chạy server và test kết nối dùng giao thức telnet qua cửa sổ cmd
qua cổng 9050

Advertisements
%d bloggers like this: