Paketübertragung mit Sockets Was, wohin?
description
Transcript of Paketübertragung mit Sockets Was, wohin?
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.