/* * ConnectionHandler * * Version 1.0 * * 20061014 * * Author: Jenny Nordgren */ /** * ConnectionHandler skapar en socket till en viss server på en viss port, och hämtar oavbrutet ny information från servern samt kan skicka nya meddelanden till servern. * */ import javax.swing.*; import java.awt.*; import java.net.*; import java.io.*; public class ConnectionHandler implements Runnable { private Thread t = new Thread(this); private String host; private int port; private BufferedReader in; private PrintWriter out; private Boolean fetch = true; private String message; private Client chatWindow; /** * Konstruktor som skapar en socket samt en tråd som sköter hämtning av information från begärd host * */ public ConnectionHandler(String host, int port, Client chatWindow) { this.chatWindow = chatWindow; try { Socket sock = new Socket(host, port); in = new BufferedReader( new InputStreamReader( sock.getInputStream())); out = new PrintWriter(sock.getOutputStream(), true); chatWindow.updateChatArea("Connected to "+host+" at port "+port); t.start(); chatWindow.setInputEnabled(true); } catch (Exception e){ chatWindow.updateChatArea("Could not connect to " + host + " at port " +port); } } /** * Läser nya meddelanden från servern i en loop som kan avslutas genom att kalla metoden closeConnection() */ public void run() { while(fetch) { try { message = in.readLine(); if(message != null) { chatWindow.updateChatArea(message); } }catch (IOException io) { chatWindow.updateChatArea("Could not connect to " + host + " at port " +port+ "\n"); } } try { out.close(); in.close(); chatWindow.updateChatArea("Disconnected from "+host); } catch (IOException ioe) {} } /** * Skickar en sträng till servern vi är uppkopplade mot * */ public void sendChatMessage(String message) { try { out.println(message); } catch (Exception e) { chatWindow.updateChatArea("Could not send message to chatserver"); } } /** * Avslutar loopen i run-metoden */ public void CloseConnection() { fetch = false; } }