UDP Server und Client

Aktuell unterrichte ich an einer IT Schule Objekt Orientierte Programmierung mit C#. Dabei bin ich dauernd auf der Suche nach C# Beispielen, die anhand einer realen praktischen Anwendung ein OO Konzept zeigt. Dieses Mal habe ich vor Socket Kommunikation zu zeigen. Eine Client Server Anwendung auf Low Level. Für den Server wird ein lang laufender Task gestartet, der asynchron läuft. Mit dem Using Schlüsselwort wird ein UDPClient aus dem .NET Framework initiert um auf Port 2000 zu lauschen. Für die Synchronisierung mit dem UI Thread wird die Dispatcher Klasse benötigt.

   1:  Task.Run(async () =>
   2:              {
   3:                  using (var client = new UdpClient(2000))
   4:                  {
   5:                      while (true)
   6:                      {
   7:                          var udp = await client.ReceiveAsync();
   8:                          string txt = Encoding.ASCII.GetString(udp.Buffer);
   9:                          Application.Current.Dispatcher.Invoke(() =>
  10:                          {
  11:                              listView1.Items.Add(txt);
  12:                          });
  13:                      }
  14:                  }
  15:              });

 

Dazu wird ein Client programmiert, was fast noch einfacher von der Hand geht. UDP ist ein schlankes verbindungsloses Protokoll. Hier wird ein einfacher Broadcast ausgelöst auf den auch mehr als ein Server lauschen können.

   1:    using (UdpClient client = new UdpClient())
   2:              {
   3:                  IPEndPoint ipe = new IPEndPoint(IPAddress.Broadcast, 2000);
   4:                  byte[] bytes = Encoding.ASCII.GetBytes("Hello Worlds");
   5:                  client.Send(bytes, bytes.Length, ipe);
   6:              }
Kommentare sind geschlossen