/* | |||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license | |||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Main.java to edit this template | |||||
*/ | |||||
package ChatProgramm; | |||||
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.Socket; | |||||
import java.util.logging.*; | |||||
/** | |||||
* Builder Class | |||||
* @author le | |||||
*/ | |||||
public class Client | |||||
{ | |||||
private static Logger lg = Logger.getLogger("netz"); | |||||
private static final int PORT = 35000; //lt. iana port > 2¹⁵ | |||||
private static final String IP = "127.0.0.1"; | |||||
public Client() throws IOException | |||||
{ | |||||
lg.info("Client: versuche zu verbinden"); | |||||
Socket s = new Socket(IP, PORT); // ACHTUNG blockiert! | |||||
lg.info("Client: Verbindung akzeptiert"); | |||||
InputStream is = s.getInputStream(); | |||||
OutputStream os = s.getOutputStream(); | |||||
//Umwandlung der Byteströme | |||||
InputStreamReader isr = new InputStreamReader(is, "UTF-8"); | |||||
OutputStreamWriter osr = new OutputStreamWriter(os, "UTF-8"); | |||||
//Puffer | |||||
BufferedReader in = new BufferedReader(isr); | |||||
//BufferedWriter out = new BufferedWriter(osr); | |||||
//besser | |||||
PrintWriter out = new PrintWriter(osr); | |||||
lg.info("Client: Streams erfolgreich initialisiert"); | |||||
lg.info("Client: sende Textnachricht"); | |||||
out.println("Hallo Du Server - ich bin ein Client"); | |||||
out.flush(); | |||||
lg.info("Client: warte auf Serverantwort"); | |||||
String nachricht = in.readLine(); // ACHTUNG blockiert | |||||
lg.info("Client: Serverbestätigung erhalten"); | |||||
lg.info("Client: fertig"); | |||||
in.close(); | |||||
out.close(); | |||||
s.close(); | |||||
} | |||||
/** | |||||
* @param args the command line arguments | |||||
*/ | |||||
public static void main(String[] args) | |||||
{ | |||||
try | |||||
{ | |||||
new Client(); | |||||
} | |||||
catch (IOException ex) | |||||
{ | |||||
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex); | |||||
} | |||||
} | |||||
} |
{ | { | ||||
public Start() | public Start() | ||||
{ | { | ||||
Transmitter transmitter = new Transmitter(); | |||||
//Transmitter transmitter = new Transmitter(); | |||||
ChatView view = new ChatView(); | ChatView view = new ChatView(); | ||||
CommandController controller_commands = new CommandController(view, transmitter); | |||||
//CommandController controller_commands = new CommandController(view, transmitter); | |||||
CommandController controller_commands = new CommandController(view); | |||||
controller_commands.registerEvents(); | controller_commands.registerEvents(); | ||||
controller_commands.registerCommands(); | controller_commands.registerCommands(); | ||||
view.setVisible(true); | view.setVisible(true); |
public class CommandController implements ActionListener{ | public class CommandController implements ActionListener{ | ||||
private ChatView view; | private ChatView view; | ||||
private Transmitter transmitter; | |||||
//private Transmitter transmitter; | |||||
private CommandInvoker invoker; | private CommandInvoker invoker; | ||||
public CommandController(ChatView view, Transmitter transmitter){ | |||||
// public CommandController(ChatView view, Transmitter transmitter){ | |||||
// this.view = view; | |||||
// this.transmitter = transmitter; | |||||
// this.invoker = new CommandInvoker(); | |||||
// } | |||||
public CommandController(ChatView view){ | |||||
this.view = view; | this.view = view; | ||||
this.transmitter = transmitter; | |||||
this.invoker = new CommandInvoker(); | this.invoker = new CommandInvoker(); | ||||
} | } | ||||
package ChatProgramm.controller.commands; | package ChatProgramm.controller.commands; | ||||
import ChatProgramm.Client; | |||||
import ChatProgramm.Server; | |||||
import ChatProgramm.model.Client; | |||||
import ChatProgramm.model.Server; | |||||
import ChatProgramm.util.OhmLogger; | import ChatProgramm.util.OhmLogger; | ||||
import ChatProgramm.view.ChatView; | import ChatProgramm.view.ChatView; | ||||
import java.io.IOException; | import java.io.IOException; |
/* | |||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license | |||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Main.java to edit this template | |||||
*/ | |||||
package ChatProgramm.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.logging.*; | |||||
/** | |||||
* Builder Class | |||||
* | |||||
* @author le | |||||
*/ | |||||
public class Client extends Transmitter { | |||||
private static Logger lg = Logger.getLogger("netz"); | |||||
private Socket socket; | |||||
private BufferedReader reader; | |||||
private PrintWriter writer; | |||||
private static final int PORT = 35000; //lt. iana port > 2¹⁵ | |||||
private static final String IP = "127.0.0.1"; | |||||
public Client() throws IOException { | |||||
connect(); | |||||
// out.println("Hallo Du Server - ich bin ein Client"); | |||||
// out.flush(); | |||||
// | |||||
// lg.info("Client: warte auf Serverantwort"); | |||||
// | |||||
// String nachricht = in.readLine(); // ACHTUNG blockiert | |||||
// lg.info("Client: Serverbestätigung erhalten"); | |||||
// | |||||
// lg.info("Client: fertig"); | |||||
// in.close(); | |||||
// out.close(); | |||||
// s.close(); | |||||
} | |||||
/** | |||||
* @param args the command line arguments | |||||
*/ | |||||
public static void main(String[] args) { | |||||
try { | |||||
new Client(); | |||||
} catch (IOException ex) { | |||||
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex); | |||||
} | |||||
} | |||||
@Override | |||||
public void connect() throws IOException { | |||||
try { | |||||
lg.info("Client: Verbindung wird aufgebaut"); | |||||
socket = new Socket(IP, PORT); | |||||
lg.info("Client: Verbindung aufgebaut"); | |||||
lg.info("Client: initialisiere reader und writer"); | |||||
InputStream is = socket.getInputStream(); | |||||
OutputStream os = socket.getOutputStream(); | |||||
InputStreamReader isr = new InputStreamReader(is, "UTF-8"); | |||||
OutputStreamWriter osr = new OutputStreamWriter(os, "UTF-8"); | |||||
reader = new BufferedReader(isr); | |||||
writer = new PrintWriter(osr); | |||||
lg.info("Client: Initialisierung abgeschlossen"); | |||||
lg.info("Client: warte auf Nachricht"); | |||||
} catch (java.io.InterruptedIOException e) { | |||||
lg.warning("Timeout" + "(" + timeout / 1000 + "s)"); | |||||
} | |||||
} | |||||
} |
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Main.java to edit this template | * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Main.java to edit this template | ||||
*/ | */ | ||||
package ChatProgramm; | |||||
package ChatProgramm.model; | |||||
import ChatProgramm.model.Transmitter; | |||||
import java.io.BufferedReader; | import java.io.BufferedReader; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.io.InputStream; | import java.io.InputStream; | ||||
* Builder Class | * Builder Class | ||||
* @author le | * @author le | ||||
*/ | */ | ||||
public class Server | |||||
public class Server extends Transmitter | |||||
{ | { | ||||
private static Logger lg = Logger.getLogger("netz"); | private static Logger lg = Logger.getLogger("netz"); | ||||
private Socket socket; | private Socket socket; | ||||
private BufferedReader reader; | private BufferedReader reader; | ||||
private PrintWriter writer; | private PrintWriter writer; | ||||
private static final int PORT = 35000; //lt. iana port > 2¹⁵ | private static final int PORT = 35000; //lt. iana port > 2¹⁵ | ||||
private static int timeout = 10000; | |||||
public void connect() throws IOException | public void connect() throws IOException | ||||
{ | { |
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license | * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license | ||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template | * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template | ||||
*/ | */ | ||||
package ChatProgramm.model; | package ChatProgramm.model; | ||||
import java.io.IOException; | |||||
import java.util.concurrent.Flow; | |||||
import java.util.concurrent.Flow.Subscriber; | |||||
/** | /** | ||||
* | * | ||||
* @author ahren | * @author ahren | ||||
*/ | */ | ||||
public class Transmitter implements Runnable | |||||
{ | |||||
public Transmitter() | |||||
{ | |||||
} | |||||
@Override | |||||
public void run() | |||||
{ | |||||
} | |||||
public abstract class Transmitter implements Runnable{ | |||||
static final int timeout = 10000; | |||||
public Transmitter() { | |||||
} | |||||
public abstract void connect() throws IOException; | |||||
@Override | |||||
public void run() { | |||||
} | |||||
} | } |