// Datei: EchoGeben.java
// Datum: 18.12.2018
// Autor: Brecht
// Thema: Mit Datagrammen ein Echo-Serving nachbilden
//        Start auf Host hrz am Port 8888
// ---------------------------------------------------------
import java.net.*;
class EchoGeben {
  public static void main(String[] args) throws Exception {
    System.out.println("EchoGeben startet");
    // Datagramm-Socket am Port 8888 einrichten
    // -----------------------------------------------------
    DatagramSocket ds = new DatagramSocket(8888);
    // Vereinbarungen fuer ein (leeres) 10-Bytes-Datagramm
    // -----------------------------------------------------
    int contentLen    = 10;
    byte[] b          = null;
    DatagramPacket dp = null;
    // Auf Datagramm warten und es bei Empfang zuruecksenden
    // Abbruch beim Empfang von quit
    // -----------------------------------------------------
    String inhalt = null;
    while(true) {
      // Leeres Datagramm bilden
      // ---------------------------------------------------
      b  = new byte[contentLen];
      dp = new DatagramPacket(b, contentLen);
      // Warten und Datagramm zuruecksenden
      // ---------------------------------------------------
      System.out.println("\nEchoGeben wartet im receive()");
      ds.receive(dp);
      ds.send(dp);
      System.out.println("Echo gesendet");
      // Abbruch?
      // ---------------------------------------------------
      inhalt = new String(dp.getData()).trim();
      if(inhalt.equals("quit")) break;
    }
    ds.close();
    System.out.println("EchoGeben endet");
  }
}