Paketübertragung mit Sockets Was, wohin? • Adressierung durch java.net.InetAddress Bsp: adr=InetAddress.getByName(“localhost“); • Pakete sind java.net.DatagramPacket – Konstruktoren: • DatagramPacket(byte[] buf,int len) ungerichtetes Paket, haupts. zur Aufnahme von Nachrichten • DatagramPacket(byte[] bf,int ln, InetAddres dst) Paket mit Zieladresse – Interessante Selektoren/Modifikatoren • byte[] getData() • void setPort(int iport) liefert Paket-Inhalt setzt den Ziel-Port Übertragung mit DatagramSocket´s • Konstruktoren für java.net.DatagramSocket: – DatagramSocket(int port) – DatagramSocket(int prt,InetAddress dst) Pakete können nur nach dst geschickt werden. • Methoden: – void send(DatagramPacket p) Abschicken von p (Ziel ist in p) – void receive(DatagramPacket p) blockierendes Empfangen, Eintragen in p • Pakete werden per UDP verschickt. keine Garantie bzgl. Ablieferung/Reihenfolge Ein-/Ausgabe mit Strömen • Abstrakte Basisklassen zur byteweisen I/O – java.io.InputStream – Java.io.OutputStream • Komfortable IO durch Zusammenschalten Bsp: Schreiben von Objekten File fos = new FileOutputStream(“Filename“); oos = new ObjectOutputStream(fos); oos.writeObject(some_object); Datenübertragung per TCP über Sockets • Konstruktor: – java.net.Socket(InetAddress dst, int prt) Verbindungsaufbau zu Host dst auf Port prt – Socket(InetAddress dadr,int dprt, InetAddress ladr, int lprt) Verbindungsaufbau zu dadr:dprt von der lokalen Adresse ladr und dem lokalen Port lprt • Senden und Empfangen: InputStream getInputStream() OutputStream getOutputStream() Aufbau eines Servers mit ServerSockets • Konstruktor: java.net.ServerSocket(int prt) Aktivierung eines Servers auf Port prt • Idee: Für jeden neuen Klienten wird ein Socket generiert, und so gezielte IO ermöglicht. • Socket accept() Blockiert, bis sich ein neuer Klient meldet und gibt einen entsprechenden Socket zurück.