Praesentationsquelle herunterladen

Werbung
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.
Herunterladen