Rechnernetze
Home Nach oben

Verbindungsaufbau

Für den Verbindungsauf und -abbau eines Clients reichen die Befehle

Socket client = new Socket(hostname, port);
....
client.close();

Hierbei ist hostname der Name des Hosts, mit dem eine Verbindung aufgebaut werden soll; port ist die Portnummer.

Allerdings werden weitere Befehle benötigt, um Daten lesen und schreiben zu können. Um entsprechende Ein- und Ausgabeobjekte zu erzeugen, muss in Java beispielsweise geschrieben werden:

InputStream sin = client.getInputStream();
BufferedReader fromServer = new BufferedReader(new InputStreamReader(sin));
...
fromServer.close();

OutputStream sout = client.getOutputStream();
PrintWriter toServer = new PrintWriter(new OutputStreamWriter(sout));
...
toServer.close();

Man beachte, dass die Verbindungen in jeder Richtung unabhängig von der Gegenrichtung geschlossen werden können. TCP baut die Verbindung erst ab, wenn beide Richtungen geschlossen sind; der Abbau kann jedoch auch explizit geschehen:

client.close();

Die eigentliche Ausgabe kann dann durch einen Befehl der Art

toServer.println("Hallo");
toServer.flush();

bewirkt werden. Das Lesen erfolgt durch

String line = fromServer.readLine();

Wenn der Null-Pointer zurückgegeben wird, wurde die Verbindung beendet.

Die Daten sind in der Regel Bytes (in Java in der Regel durch die Stream-Klassen behandelt). Durch die Klasse InputStreamReader, OutputStreamWriter werden diese in Unicode-Zeichen umgewandelt bzw. von Unicode-Zeichen in Bytes, so dass sie auf dem Datentyp String bereitgestellt werden (in Java in der Regel durch die Reader/Writer-Klassen behandelt).