50 likes | 170 Views
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
E N D
Paketübertragung mit SocketsWas, wohin? • Adressierung durch java.net.InetAddressBsp: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() liefert Paket-Inhalt • void setPort(int iport) 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 ZusammenschaltenBsp: Schreiben von Objekten Filefos = 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.