/*
 * "Grundkurs Programmieren in Java - Band 2 (2. Auflage, 2006)I"
 * 2003-2006, Carl Hanser Verlag
 * Loesungsvorschlag zu Aufgabe (Version 2.0)
 * (c) 2003-2006 D. Ratz, J. Scheffler, D. Seese, J. Wiesenberger
 *
 */

import java.io.*;
import java.net.*;

class TalkDienst extends Thread {
  
  Socket         c1, c2;    // Sockets für die beiden Clients
  BufferedReader in;        // Eingabe-Ströme zu den Clients
  PrintWriter    out;       // Ausgabe-Ströme zu den Clients
  
  /**
   * Eingabe- und Ausgabestroeme zu den Clients erzeugen
   *
   */
  TalkDienst(Socket sin, Socket sout) {
    // Die Client-Sockets in den Instanzvariablen speichern
    c1 = sin;
    c2 = sout;
    // try-catch-Block beginnen
    try {
      // Den Eingabe-Strom vom anderen Client erzeugen
      in  = new BufferedReader(new InputStreamReader(c1.getInputStream()));
      
      // Den Ausgabe-Strom zum anderen Client erzeugen
      out = new PrintWriter(c2.getOutputStream(), true);
      out.println("*** " + "Chatpartner gefunden, es kann losgehen!" + " ***");
    }
    catch (IOException e) { }
  }
  // run-Methode ueberschreiben: Abarbeitung des eigentlichen Protokolls
  
  public void run() {
    String line;
    
    try {
      while(true) {
        line=in.readLine();
        if(line!=null)
          out.println(line);
        try {
          Thread.sleep(10);
        }
        catch(InterruptedException e) {
          break;
        }
      }
    }
    catch (IOException e) {
      System.out.println("Fehler:" + e);
    }
  }
}