Csharp/CSharp Tutorial/Network/Socket Udp Client

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

Simple Udp Client: send and receive

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class MainClass
{
   public static void Main()
   {
      byte[] data = new byte[1024];
      string input, stringData;
      IPEndPoint ip = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9999);
      Socket server = new Socket(AddressFamily.InterNetwork,SocketType.Dgram, ProtocolType.Udp);
      string welcome = "Hello";
      data = Encoding.ASCII.GetBytes(welcome);
      server.SendTo(data, data.Length, SocketFlags.None, ip);
      IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
      EndPoint Remote = (EndPoint)sender;
      data = new byte[1024];
      int receivedDataLength = server.ReceiveFrom(data, ref Remote);
      Console.WriteLine("Message received from {0}:", Remote.ToString());
      Console.WriteLine(Encoding.ASCII.GetString(data, 0, receivedDataLength));
      server.Close();
   }
}

Udp client setup

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class MainClass
{
   public static void Main()
   {
      byte[] data = new byte[1024];
      IPEndPoint ip = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9999);
      Socket server = new Socket(AddressFamily.InterNetwork,SocketType.Dgram, ProtocolType.Udp);
      string welcome = "Hello";
      data = Encoding.ASCII.GetBytes(welcome);
      server.SendTo(data, data.Length, SocketFlags.None, ip);
      IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
      EndPoint tmpRemote = (EndPoint)sender;
      data = new byte[1024];
      int receivedDataLength = server.ReceiveFrom(data, ref tmpRemote);
      Console.WriteLine("Message received from {0}:", tmpRemote.ToString());
      Console.WriteLine(Encoding.ASCII.GetString(data, 0, receivedDataLength));

      server.SendTo(Encoding.ASCII.GetBytes("message 1"), tmpRemote);
      server.SendTo(Encoding.ASCII.GetBytes("message 2"), tmpRemote);
      server.SendTo(Encoding.ASCII.GetBytes("message 3"), tmpRemote);
      server.SendTo(Encoding.ASCII.GetBytes("message 4"), tmpRemote);
      server.SendTo(Encoding.ASCII.GetBytes("message 5"), tmpRemote);
      server.Close();
   }
}

Udp Multi-send

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class MainClass
{
   public static void Main()
   {
      Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
      IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9888);
      IPEndPoint iep2 = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9999);
      server.Bind(iep);
      
      byte[] data = Encoding.ASCII.GetBytes("This is a test message");
      server.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("127.0.0.1")));
      server.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 50);
      server.SendTo(data, iep2);
      server.Close();
   }
}