Beruflich Dokumente
Kultur Dokumente
TCP Socket Programmierung in Java
TCP Socket Programmierung in Java
http://www.peuss.com/java/Sockets.php
Socket-Programmierung in Java
Warum Socket-Programmierung?
Sobald man Programme schreiben will, die nicht auf einem einzigen Rechner gespeichert sind, sondern auf mehrere beliebige Standorte, die miteinander vernetzt sind, verteilt sein knnen, muss man sich Gedanken darber machen, wie die einzelnen Programmteile miteinander kommunizieren knnen. Eine schon recht alte, aber immer noch hufig verwendete Methode ist die Kommunikation ber Sockets. Hierbei agiert das Programmteil, das einen Dienst anbietet als Server, das andere als Client. Java stellt mittlerweile einige recht komfortable Klassen zur Socket-Programmierung zur Verfgung. Das Package java.net enthlt die folgenden zwei Socket-Klassen: ServerSocket Socket (hiermit ist immer der Client-Socket gemeint) Neben den Socket-Klassen bentigt man fr die Kommunikation ber Streams folgende zwei Stream-Klassen aus dem Package java.io: OutputStream InputStream Mit diesen zwei Klassen lassen sich allerdings nur Interger-Zahlen bertragen. Falls man beliebige Objekte mit Streams bertragen mchte, braucht man aus java.io auch noch: ObjectOutputStream ObjectInputStream Das Einleiten vom Aufbau einer Socket-Verbindung ist immer die Aufgabe des Clients. Solange noch keine Verbindung besteht, hat der Server die Aufgabe, auf einem bestimmten Port zu hren, ob sich dort ein Client mit ihm verbinden will. Das folgend Aktivitts-Diagramm veranschaulicht die Situation.
1 von 4
16.05.2008 11:24
http://www.peuss.com/java/Sockets.php
sich der Server verbindet diesen mit dem Socket(InetAddress address, int port) befindet port: Port, auf dem der Server auf eine Verbindung wartet Damit beim Senden ber eine Socket-Verbindung alles gesendet void flush() wird und nichts zwischengepuffert wird, sollte man grundstzlich nach IOException java.io / java.io / OutputStream angegebenen Port auf der angegebenen Adresse. Dieser Konstruktor kann anstelle des vorherigen aufgerufen werden, wenn man anstelle des Hostnamens nur dessen IP hat. IOException java.net / Socket
2 von 4
16.05.2008 11:24
http://www.peuss.com/java/Sockets.php
java.io / InputStream java.net / Socket java.net / Socket liefert die IP des eigenen Hosts liefert einen InputStream, den man UnknownHostException java.net / Socket
wird, sollte man grundstzlich nach dem Senden diese Methode aufrufen. zum Schliessen einer Socket-Verbindung String getHostName() InetAddress getLocalHost() liefert den Namen des Hosts
void close()
IOException
InputStream getInputStream()
braucht, um Daten ber eine Socket-Verbindung empfangen zu knnen liefert einen OutputStream, den man
IOException
java.net / Socket
OutputStream getOutputStream()
IOException
java.net / Socket
3 von 4
16.05.2008 11:24
http://www.peuss.com/java/Sockets.php
die Summe beider Zahlen wird als Antwort ber die Verbindung bermittelt (15) alle gepufferten Bytes abschicken (16) Eingabe und Ausgabestrom schliessen (17, 18) warten auf weitere Client-Anfragen (10)
4 von 4
16.05.2008 11:24