Montag, Oktober 29, 2007

Netzwerkkommunikation in .Net

In .NET gibt es schon verschiedene Klassen für die Netzwerkkommunikation.

Speziell zu erwähnen sind:

  • Socket
  • TcpClient
  • TcpListener
  • UdpClient

Socket

Ermöglicht das Senden und Empfangen von Paketen auf einer sehr tiefen Ebene. Wird in .NET eigentlich nur für ICMP Pakete (obwohl es ein Ping Klasse gibt) und das Aufzeichnen von Netzwerkverkehr verwendet.

TcpClient

Stellt eine einfacher zu bedienende Schnittstelle für die Kommunikation mit TCP/IP als das Socket bereit. Sollte eigentlich immer verwendet werden, wenn eine normale TCP-Verbindung benötigt wird.

TcpListener

Ermöglich das Starten eines TCP-Server, der dann die ankommenden TCP-Verbindungsversuche annimmt und für jede Verbindung einen TcpClient startet.

UdpClient

Ermöglicht das Senden und Empfangen von UDP-Paketen. Server und Client sind in einer Klasse, da man bei UDP Sockets nicht direkt von einem Server sprechen kann.

Montag, Oktober 01, 2007

Threadsynchronisierung in .NET

In .NET können Threads über folgende Befehle und Klassen synchronisiert werden:

lock Befehl: Sperrt den Zugriff mithilfe eines Objekts (C#).
Monitor Klasse: Das gleiche wie lock, mit der Klasse.
Wait-Handles: Threads können Zustände signalisiert werden (AutoResetEvent und ManualResetEvent).
Mutex: Wird gebraucht um Threads über Prozesse hinweg zu synchronisieren.
Semaphore: Möglichkeit von Threads-Pools.

Bis jetzt haben mir die Semaphoren am besten gefallen, da sie sich am besten benutzen lassen und auch im Code noch sehr übersichtlich sind.