/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package model; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Observable; import java.util.logging.Level; import java.util.logging.Logger; import logger.OhmLogger; /** * * @author Apollo */ public class Transmitter extends Observable implements Runnable { private static final Logger lg = OhmLogger.getLogger(); private static final int PORT = 35000; private String IP_ADRESSE = ""; int modus; private String nachricht; String message; OutputStream oStream; InputStream iStream; InputStreamReader isr; OutputStreamWriter osr; BufferedReader in; PrintWriter out; Socket s; public Transmitter(int modus) { this.modus = modus; nachricht = ""; } @Override public void run() { if (modus == 0) { ServerSocket sSocket; try { sSocket = new ServerSocket(PORT); lg.info("Server: Warte auf Verbindung ..."); nachricht = "Server: Warte auf Verbindung ..."; setChanged(); notifyObservers(); s = sSocket.accept(); // Achtung: blockiert! nachricht = "Verbunden mit Client"; setChanged(); notifyObservers(); lg.info("Server: Verbindung akzeptiert"); } catch (IOException ex) { Logger.getLogger(Transmitter.class.getName()).log(Level.SEVERE, null, ex); } } else if (modus == 1) { nachricht = "Verbinden mit "+ IP_ADRESSE; setChanged(); notifyObservers(); lg.info("Client: verbinde ..."); try { s = new Socket(IP_ADRESSE, PORT); // Achtung: blockiert! lg.info("Client: Verbindung hergestellt"); } catch (IOException ex) { Logger.getLogger(Transmitter.class.getName()).log(Level.SEVERE, null, ex); } } try { iStream = s.getInputStream(); oStream = s.getOutputStream(); isr = new InputStreamReader(iStream, "UTF-8"); osr = new OutputStreamWriter(oStream, "UTF-8"); in = new BufferedReader(isr); //BufferedWriter out = new BufferedWriter(osr); out = new PrintWriter(osr); } catch (IOException ex) { Logger.getLogger(Transmitter.class.getName()).log(Level.SEVERE, null, ex); } if (modus == 0) { lg.info("Server: Stream initialisiert"); } else if (modus == 1) { lg.info("Client: Stream initialisiert"); } while (true) { try { nachricht = in.readLine(); // Achtung blockiert } catch (IOException ex) { Logger.getLogger(Transmitter.class.getName()).log(Level.SEVERE, null, ex); } setChanged(); notifyObservers(); lg.info("Server: Nachricht empfangen"); out.flush(); // wirklich absenden!! if (nachricht.equals("beenden")) { break; } } try { in.close(); out.close(); } catch (IOException ex) { Logger.getLogger(Transmitter.class.getName()).log(Level.SEVERE, null, ex); } } public void send(String input) { out.println(input); out.flush(); // wirklich absenden!! } /** * @return the nachricht */ public String getNachricht() { System.out.println("Server: NACHRICHT EMPFANGEN - " + nachricht); return nachricht; } /** * @param IP_ADRESSE the IP_ADRESSE to set */ public void setIP_ADRESSE(String IP_ADRESSE) { this.IP_ADRESSE = IP_ADRESSE; } }