Csharp/CSharp Tutorial/Network/Socket Udp Server

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Simple Udp server

<source lang="csharp">using System; using System.Net; using System.Net.Sockets; using System.Text; class MainClass {

  public static void Main()
  {
     int receivedDataLength;
     byte[] data = new byte[1024];
     IPEndPoint ip = new IPEndPoint(IPAddress.Any, 9999);
     Socket socket = new Socket(AddressFamily.InterNetwork,SocketType.Dgram, ProtocolType.Udp);
     socket.Bind(ip);
     IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
     EndPoint Remote = (EndPoint)(sender);
     while(true)
     {
        data = new byte[1024];
        receivedDataLength = socket.ReceiveFrom(data, ref Remote);
      
        Console.WriteLine(Encoding.ASCII.GetString(data, 0, receivedDataLength));
        socket.SendTo(data, receivedDataLength, SocketFlags.None, Remote);
     }
  }

}</source>

Udp Multi receive

<source lang="csharp">using System; using System.Net; using System.Net.Sockets; using System.Text; class MainClass {

  public static void Main()
  {
     Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
     Console.WriteLine("Ready to receive...");
     IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9999);
     EndPoint ep = (EndPoint)iep;
     sock.Bind(iep);
     sock.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership,new MulticastOption(IPAddress.Parse("127.0.0.1")));
     byte[] data = new byte[1024];
     int recv = sock.ReceiveFrom(data, ref ep);
     string stringData = Encoding.ASCII.GetString(data, 0, recv);
     Console.WriteLine("received: {0}  from: {1}", stringData, ep.ToString());
     sock.Close();
  }

}</source>

Udp server setup

<source lang="csharp">using System; using System.Net; using System.Net.Sockets; using System.Text; class MainClass {

  public static void Main()
  {
     int receivedDataLength;
     byte[] data = new byte[1024];
     IPEndPoint ip = new IPEndPoint(IPAddress.Any, 9999);
     Socket socket = new Socket(AddressFamily.InterNetwork,SocketType.Dgram, ProtocolType.Udp);
     socket.Bind(ip);
     IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
     EndPoint tmpRemote = (EndPoint)(sender);
     receivedDataLength = socket.ReceiveFrom(data, ref tmpRemote);
     Console.WriteLine("Message received from {0}:", tmpRemote.ToString());
     Console.WriteLine(Encoding.ASCII.GetString(data, 0, receivedDataLength));
     string welcome = "Welcome";
     data = Encoding.ASCII.GetBytes(welcome);
     socket.SendTo(data, data.Length, SocketFlags.None, tmpRemote);
     for(int i = 0; i < 5; i++)
     {
        data = new byte[1024];
        receivedDataLength = socket.ReceiveFrom(data, ref tmpRemote);
        Console.WriteLine(Encoding.ASCII.GetString(data, 0, receivedDataLength));
     }
     socket.Close();
  }

}</source>