Csharp/CSharp Tutorial/Network/Socket Udp Client — различия между версиями

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

Версия 18:31, 26 мая 2010

Simple Udp Client: send and receive

<source lang="csharp">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();
  }

}</source>

Udp client setup

<source lang="csharp">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();
  }

}</source>

Udp Multi-send

<source lang="csharp">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();
  }

}</source>