previous next Up Title Contents

2.3.12 Die listen-Funktion

Serverprozesse können als iterativ oder parallel klassifiziert werden. Ein iterativer Server arbeitet die Anforderungen nach der Reihenfolge der eintreffenden Anforderungen ab. Ein parallel arbeitender Server erzeugt für jede eintreffende Anforderung einen child-Prozess (oder Thread, wenn es das Betriebssystem zuläßt), was ein gleichzeitiges abarbeiten von mehreren Serviceanforderungen erforderlich macht.

Bei einem gleichzeitigen Eintreffen von mehr Serviceanforderungen verwendet der Server die listen-Funktion, um diese in einer Request-Queue einzutragen. So braucht die Serviceanforderungen nicht abgewiesen oder ignoriert zu weden, und die Queue bildet einen Puffer der sicherstellt, daß keine Anforderung verloren geht.

Die listen-Funktion ist nicht nur für die Erzeugung eines Lausch-Modus verantwortlich, sondern weist auch die Socket-Implementierung an mehreren simultan eintreffende Anforderungen zu verarbeiten. Dort wird also die Queue erzeugt und die Service-Anforderungen speichert, bis diese verarbeitet werden können.

Beispiel Aufruf für die listen-Funktion:

ergebnis = listen(socket_handle, queue_laenge);

Wie man oben sieht benötigt die listen-Funktion zwei Parameter. Den Socket Handle und die Queue-Länge. Auf den Socket Handle wird an dieser Stelle nicht näher eingegangen. Die Queue-Länge kann eine maximale Größe von 5 haben. Ist die Queue voll, wird eine Client-Anforderung abgewiesen und er Client bekommt eine Fehlermeldung.

Bei iterativen Servern wird die listen-Funktion als eine Sicherungsfunktion eingesetzt, um ebenfalls bei Überlastung Fehlermeldung an den Client zu schicken.


previous next Up Title Contents