package javacodebook.net.datagram.receive; import java.net.*; /** * Dieses Programm empfängt über UDP gesendete Nachrichten, und gibt diese * auf der Console aus. */ public class UDPReceiver { // Auf diesem Port erwartet der Receiver Daten private static final int PORT =5000; // Daten kommen als Byte-Array an. Die Größe eines Arrays muss zuvor // festgelegt werden private static final int BUF_SIZE = 1024; // main-Methode public static void main(String [] args) throws Exception { // der byte-Array mit angegebener Länge wird gebaut byte[] buffer = new byte[BUF_SIZE]; // leerer String wird gebaut String message = null; // Ein DatagramSocket für angegebene Portnummer wird erstellt DatagramSocket listenerSocket = new DatagramSocket(PORT); System.out.println("Bereit zum Empfang von Daten:\n"); // Damit der UDPReceiver nicht nur einmal Daten empfangen kann wird // der Empfangen-Mechanismus in einer Endlos-Schleife eingebaut. while(true) { // aus dem Byte-Array wird ein DatagramPacket mit fester Größe // erstellt DatagramPacket packet = new DatagramPacket(buffer,buffer.length); // wird ein Datagram an die url von diesem Rechner gesendet, // wird das Packet mit den gesendeten Daten gefüllt. listenerSocket.receive(packet); // Aus dem gefüllten Packet kann der Inhalt ausgelesen werden. // (Anm.: Da die Referenz des byte-Array noch existiert, könnte // auch über ihn direkt der Inhalt gelesen werden) message = new String(packet.getData(),0,packet.getLength()); // Aus dem DatagramPacket können neben dem Inhalt noch // weitere Informationen ermittelt werden System.out.println("Daten empfangen von "+ packet.getAddress().getHostName()+": \""+message+"\""); } } }