05.11.2013 Aufrufe

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

192 4 Gr<strong>und</strong>lagen der Socket-Programmierung<br />

4.3.5 Annehmende <strong>Sockets</strong><br />

Wird <strong>mit</strong> der socket()-Funktion ein neuer Socket erzeugt, so handelt es<br />

sich zunächst um einen aktiven Socket bzw. Clientsocket. Das bedeutet, daß<br />

der Socket z. B. dafür gedacht ist, <strong>mit</strong> connect() neue Verbindungen zu einem<br />

Server aufzubauen. Mit der listen()-Funktion kann man nun einen<br />

Socket in einen passiven Socket bzw. Serversocket umwandeln. Die passiven<br />

<strong>Sockets</strong> werden auf Deutsch auch gerne als annehmende oder horchende<br />

<strong>Sockets</strong> bezeichnet, da eine Anwendung <strong>mit</strong> ihrer Hilfe auf neu eingehende<br />

TCP-Verbindungen warten kann.<br />

Für jeden annehmenden Socket verwaltet das Betriebssystem eine Warteschlange<br />

der eingehenden (aber noch nicht weiter verarbeiteten) Verbindungen,<br />

die sogenannte Listen Queue des <strong>Sockets</strong>. Je nach Implementierung<br />

können in dieser Warteschlange sowohl fertig aufgebaute Verbindungen als<br />

auch solche Verbindungen verwaltet werden, die sich noch im Aufbau befinden.<br />

Ist die Warteschlange voll, werden vom System übergangsweise keine<br />

neuen Verbindungsanfragen für diesen Socket mehr beantwortet (vgl. dazu<br />

Abschnitt 4.3.6).<br />

Server<br />

Programm<br />

passiver Socket<br />

2<br />

1<br />

Listen Queue<br />

Abb. 4.10. Annehmende <strong>Sockets</strong> <strong>und</strong> die Listen-Queue<br />

Abbildubg 4.10 veranschaulicht das Zusammenspiel zwischen eingehenden<br />

Verbindungen <strong>und</strong> der Listen-Queue. Im ersten Schritt stellt ein Clientprogramm<br />

eine Verbindungsanfrage an den passiven, horchenden Socket des Servers.<br />

Der Systemkern nimmt im zweiten Schritt die Verbindungsanfrage an<br />

<strong>und</strong> erstellt einen entsprechenden Eintrag in der Warteschlange des Serversockets.<br />

Ist die Kapazität der Listen-Queue erschöpft, nimmt der Server bzw.<br />

der Systemkern so lange keine weiteren Verbindungsanfragen mehr für den<br />

Socket an, bis durch das Serverprogramm einige der aufgestauten Verbindungswünsche<br />

weiterverarbeitet wurden.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!