Java-Einsatz im Netzwerk

Java Server-Sockets

Einen Server für verbindungsorientierte Sockets realisiert die Klasse ServerSocket. Die Klasse enthält eine Reihe von Konstruktoren und Methoden, um einen Server-Socket zu erzeugen und anzumelden. Eine kompakte Form ist:

ServerSocket socket = new ServerSocket(port, backlog);

Die Parameter bestimmen die Portnummer port und die Größe backlog der Warteschlange für anstehende Clients. Nach dem Aufruf der Methode accept() wartet der Socket auf einen Client. Meldet sich ein Client an, so kehrt die Methode mit einem normalen Socket als Rückgabewert zurück.

Mit diesen Elementen ist in der folgenden Klasse SocketServer ein einfacher Server realisiert. Der Server wartet in einer Endlosschleife auf Anfragen. Ein Client erhält bei der Kontaktaufnahme eine kurze Begrüßung. Anschließend wird die Verbindung wieder abgebaut.

import java.net.*;
import java.io.*;

public class SocketServer {
static int backlog = 10; // Laenge der Warteschlange
static int port = 1234;

public static void main( String args[]) {

try
{
ServerSocket socket = new ServerSocket(port, backlog);
for( ;; ) {
System.out.println( "Warte auf Verbindung... " );
Socket sockConnected = socket.accept();
System.out.println( "Verbunden mit " + sockConnected);
PrintStream ps = new PrintStream( sockConnected.getOutputStream() );
ps.println( "Hallo" );
sockConnected.close();
}

}
catch( IOException e ) { System.err.println( e ); }
}
}