Java-Einsatz im Netzwerk

Java UDP-Sockets

Der beschriebene Client-Socket verwendet eine stromorientierte Verbindung (TCP). Paketorientierte Verbindungen (UDP) realisiert die Klasse DatagramSocket. So erzeugt folgende Zeile einen neuen Socket für die Datagramm-Kommunikation über Port 8888.

DatagramSocket s = new DatagramSocket(8888);

Der Datenaustausch erfolgt dann mit Objekten der Klasse DatagramPacket. Zum Versenden werden in diese Pakete die Daten und die Zieladressen eingetragen.

Das Zusammenspiel der Klassen soll das Beispiel eines Chat-Servers darstellen. Der Server hat folgende Funktionalitäten:

  • Anmeldung von Clients

  • Nachricht eines Clients an alle anderen Clients weiterleiten

  • Abmeldung von Clients

An- und Abmeldung erfolgen über Pakete, die eine entsprechende Kennung enthalten. Der Server führt eine Liste mit allen angemeldeten Clients. Erhält er von einem der Clients eine Nachricht, so schickt er eine Kopie davon an alle anderen Clients.

Der folgende Code realisiert einen solchen Server. Die angemeldeten Clients werden in einem Objekt der Klasse Vector gespeichert. Die Fehlerprüfung beschränkt sich auf die Ausgabe von eventuell auftretenden Ausnahmefehlern (Exceptions). Einige der benutzten Methoden sind erst ab Java 1.4 vorhanden, können aber durch ältere, weniger elegante Methoden ersetzt werden.