Java Reference
In-Depth Information
Allgemeiner Ablauf
Um allgemein eine Verbindung über Sockets aufzubauen, erstellen Sie in den
meisten Programmiersprachen für den Client eine Instanz eines Socket. Dabei
geben Sie meist einfach nur den gewünschten Zielserver und einen Port für die
Kommunikation sowie eventuell eine Information über die Art der ausgetausch-
ten Daten an. In Java würde das etwa mit der Syntax erfolgen:
Listing 14.10■ Aufbau einer Socket-Instanz in Java
Socket verbindung = new Socket(hostname, portnummer);
Auf der Gegenseite (dem Server) muss nun auf dem angegebenen Port ein
ServerSocket lauschen, das sich um Client-Anforderungen kümmert. Man
nennt diese Objekte auch serverseitige Sockets und so ein Socket stellt meist
eine Methode zum Akzeptieren oder Ablehnen einer Client-Anfrage bereit (etwa
die Methode accept() unter Java).
Wenn eine Client-Anfrage vom Server akzeptiert wurde, ist eine Verbindung eta-
bliert, über die in der Folge der Client und der Server kommunizieren können.
Am Ende der Kommunikation sollte in der Regel die Verbindung mit einer pas-
senden Methode explizit geschlossen werden (unter Java gibt es dazu die
close() -Methode).
14.2.1■Push-Service im Web
Wichtig ist bei einer Socket-Verbindung, dass auch der Server „ungefragt“ etwas an den
Client schicken kann - wenn die Verbindung einmal etabliert ist. Beim klassischen http-
Turn-around ist das eben nicht möglich. Seit einiger Zeit gibt es aber auch im Web Versu-
che, dass der Server Daten bereits in dem Moment an den Client senden kann, in dem diese
verfügbar sind. Und das ist eben eine „ungefragte“ Übermittlung, die als Push - oder Comet -
Service bekannt ist und gewisse Kommunikationszeiten eklatant verkürzen kann. Eine der
bekanntesten Behelfslösungen wird lange Abfrage (long polling) genannt. Dabei öfnet der
Client ganz konventionell eine http-Verbindung mit dem Server, aber sie bleibt in irgend-
einer Form geöfnet. Es wird also eine Art virtuelle Verbindung verwaltet.
Aber alle diese Behelfslösungen haben einmal das Problem, dass im Client das Hören auf die
Meldungen des Servers irgendwie implementiert werden muss 2 und vor allen Dingen das
relativ aufwendige http als Basis genutzt werden muss, was solche Behelfslösungen nicht
besonders gut für Anwendungen mit geringer Latenz qualiiziert. Bei WebSockets wird nun
ein schlankeres Protokoll verwendet, das zudem eine persistente Verbindung etabliert.
2 Etwa indem der Client einfach periodisch den Server nach Neuigkeiten fragt.
 
Search WWH ::




Custom Search