123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- package chatprogramm.model;
-
- import chatprogramm.logger.OhmLogger;
- 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.io.UnsupportedEncodingException;
- import java.net.Socket;
- import java.util.Observable;
- import java.util.logging.Level;
- import java.util.logging.Logger;
-
- /**
- *
- * @author Marian
- */
- public class Client extends Observable implements Runnable
- {
- private Socket socket;
- private BufferedReader reader;
- private PrintWriter writer;
- private boolean ready;
- private Thread thd;
- private String ip;
- private int port;
- private static Logger logger = OhmLogger.getLogger();
-
-
- public Client(String ip, int port)
- {
- this.ip = ip;
- this.port = port;
- this.socket = null;
- this.reader = null;
- this.writer = null;
- this.ready = false;
- this.thd = null;
- }
-
- public void init()
- {
- if (thd == null) {
- thd = new Thread(this);
- thd.start();
- }
- }
-
- public void sendMessage(String msg)
- {
- if (ready) {
- writer.println(msg);
- writer.flush();
- } else {
- logger.warning("Server not ready to send message. Connect first");
- }
- }
-
- @Override
- public void run()
- {
- logger.info("Running client...");
-
- while (true)
- {
- if (socket == null) {
- try {
- socket = new Socket(ip, port);
- logger.info("Connected to server");
- } catch (IOException e) {
- logger.severe(e.getMessage());
- socket = null;
- try {
- Thread.sleep(1000);
- } catch (InterruptedException ex) {
- Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
- }
- continue;
- }
-
- InputStream iStream;
- try {
- iStream = socket.getInputStream();
- } catch (IOException e) {
- logger.severe(e.getMessage());
- return;
- }
- OutputStream oStream;
- try {
- oStream = socket.getOutputStream();
- } catch (IOException e) {
- logger.severe(e.getMessage());
- return;
- }
-
- InputStreamReader isr;
- try {
- isr = new InputStreamReader(iStream, "UTF-8");
- } catch (UnsupportedEncodingException e) {
- logger.severe(e.getMessage());
- return;
- }
- OutputStreamWriter osr;
- try {
- osr = new OutputStreamWriter(oStream, "UTF-8");
- } catch (UnsupportedEncodingException e) {
- logger.severe(e.getMessage());
- return;
- }
-
- reader = new BufferedReader(isr);
- writer = new PrintWriter(osr);
-
- ready = true;
- }
-
- if (ready) {
- String msg;
- try {
- logger.info("Waiting for message");
- msg = reader.readLine();
- } catch (IOException e) {
- logger.severe(e.toString());
- return;
- }
-
- this.setChanged();
- this.notifyObservers(msg);
- }
- }
- }
- }
|