.Net-Snippet: UDP Client mit Timeout-Funktionalität

6. November, 2007

Vor einiger Zeit war ich gezwungen eine, auf UDP basierende Server-Client Applikation mit Broadcast-Funktionaltität zu schreiben, im Zuge dieser Applikation ist das nachfolgende Snippet entstanden. Es erweitert den vorhanden UDPClient des .Net-Frameworks um eine Option ein Timout anzugeben - verwendet wurde dies als Alternative für die asynchronen Methodenaufrufe, wie sie laut Microsoft zu implementieren sind. Ein interessanter Artikel dazu und nachfolgend das Snippet:

1:  namespace ExtendedCommunicationLib
2:  {
3:      //Handles a UDP Connection
4:      public class UDPTimeoutClient
5:      {
6:          //UDP Socket
7:          private Socket udpClient = new Socket(
8:              AddressFamily.InterNetwork, 
9:              SocketType.Dgram,
10:              ProtocolType.Udp);
11:
12:          //UDP ClientSocket
13:          public Socket Client
14:          {
15:              get { return udpClient; }
16:          }
17:              
18:          public UDPTimeoutClient(Int16 timeout)
19:          {
20:              udpClient.SetSocketOption(
21:                       SocketOptionLevel.Socket,
22:                       SocketOptionName.ReceiveTimeout,
23:                       timeout);
24:          }
25:      }
23:  }