Home » Tutorials » Netzwerk und Internet » WinSocket-Programmierung

WinSocket-Programmierung

SocketProgrammierung mit Delphi

Nachdem jetzt etwas Theorie durchgekaut wurde kommen wir zum praktischen Teil meines Tutorials. Ich werde hier anhand verschiedener Beispiele die wichtigsten Methoden, Eigenschaften und Ereignisse der WinSockets erläutern.

Was ist ein Socket?

Die Sockets stellen ein von Windows geliefertes Interface dar, das es Programmierern erleichtern soll auf das Netzwerk zuzugreifen. Delphi bringt zwei äußerst wichtige Objekte mit sich die es uns erleichtern die Sockets von Windows zu benutzen. Das ist einmal TClientSocket und dann noch TServerSocket. Beide sind von TCustomSocket abgeleitet.Die Unit, die einzubinden ist, um die Sockets auch überhaupt benutzen zu können lautet ScktComp.

Wie benutze ich die Sockets?

In neueren Delphi Versionen sind die Sockets einfach als Non-Visual-Component (wie zB auch TTimer) auf die Form zu ziehen. Damit erspart man sich das Initialisieren der Komponente. Da es aber auch Leute gibt, die mit älteren Versionen von Delphi arbeiten, werde ich die Komponenten immer schön manuell initialisieren und zuweisen. Um ein Socket zu erstellen brauchen wir folgenden Code:

var
 Socket: TServerSocket; 
 //Kann auch TClientSocket sein}
begin
 //Initialisierung des Objekts
 Socket := TServerSocket.Create(Form1);

//Zuweisen eines Portes zB 10024
Socket.Port := 10024;

//Folgende Zeile bräuchte ein TClientSocket noch:
//Socket.Host := ‚127.0.0.1‘;

//In den Listening-Status gehen bzw connecten
Socket.Open;
end;

Dieser Code initialisiert einen ServerSocket welcher auf Port 10024 auf einen Clienten wartet bzw einen Clienten auf dem Port 10024 welcher auf den eigenen Rechner connecten will. Wie man erkennen kann wird die IP Adresse als ein String der Eigenschaft Host übergeben. Hier kann nach belieben auch ein Hostname angegeben werden. Der Port wird als Integerwert der Eigenschaft Port übergeben. Der ServerSocket hat die Eigenschaft Host nicht, da sie für einen Server nicht benötigt wird! Die Methode Open startet den Server bzw. den Clienten. Vergesst bitte nicht, das Socket Objekt, nach der Benutzung mit Free wieder freuzugeben, damit es keine Konflikte im Speicher gibt (Socket.Free). Dies müsst ihr natürlich nicht beachten, wenn ihr die Sockets einfach mittels Drag & Drop aus der VCL Registrierkarte „Internet“ auf die Form gezogen habet (was ich übrigens jedem dringend empfehle, es spart eine Menge Arbeit).

Kommunikation über die Sockets

TCustomSocket bietet uns von Haus aus keine Methoden die zur Kommunikation tauglich sind, da aber das Objekt TCustomWinSocket sowohl von TClientSocket als auch von TCustomSocket komplett gekaspelt wird können wir auf die Methoden dieses Objekts zurückgreifen. TCustomWinSocket bietet uns drei Arten der Kommuikation:

  • Text
  • Buffer
  • Stream (wird im dieser Version des Tutorials noch nicht behandelt)

Wir gehen auf die einzelnen Arten in einzelnen Kapiteln ein.