08.10.2013 Aufrufe

Skriptum

Skriptum

Skriptum

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

KAPITEL 2. PROGRAMMIERSCHNITTSTELLEN UNTER UNIX 50<br />

while ((len = in.read(b)) != -1) {<br />

System.out.write(b, 0, len);<br />

}<br />

in.close();<br />

sock.close();<br />

} catch (IOException e) {<br />

System.err.println(e.toString());<br />

System.exit(1);<br />

}<br />

} // main<br />

} // class DayTime<br />

2.4.4 Server zur verbindungsorientierten Kommunikation<br />

Ein Socket-Server unterscheidet sich in seinem Verhalten stark von dem des Clients.<br />

Deshalb existiert dafür auch eine eigene Klasse ServerSocket. Ihre wichtigsten Methoden<br />

sind der Konstruktor und accept():<br />

public ServerSocket(int port)<br />

throws IOException<br />

public Socket accept()<br />

throws IOException<br />

Der Konstruktor erzeugt einen Socket und verwendet default-Werte für die Routinen<br />

listen() und bind() (vgl. dazu die Beschreibung des C-Interface ab Seite<br />

34). Andere Konstruktoren erlauben hier Feineinstellungen. Socket accept() wartet<br />

genau wie beim C-Interface auf einen eingehenden Request eines Client. Die<br />

eigentliche Kommunikation erfolgt wieder mit Hilfe des von accept() retournierten<br />

Socket. Auch hier schließt close () wiederum den Socket.<br />

Auch in Java sind spezielle Maßnahmen notwendig, wenn mehr als ein Client<br />

gleichzeitig servisiert werden soll. Anders als die mit fork() erzeugten schwergewichtigen<br />

Prozesse werden in Java gerne leichtgewichtige Threads erzeugt. Bei ihnen<br />

werden u.a. keine getrennen Datenbereiche eingerichtet. Ein Echo-Server der diese<br />

Anforderungen erfüllt könnte folgendermaßen aussehen:<br />

import java.net.*;<br />

import java.io.*;<br />

public class EchoServer<br />

{

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!