/* * ChatClient.java * * Created on den 30 augusti 2001, 18:54 */ package ip1.u3.a; import java.net.*; import java.io.*; /** Kontrollklass för ChatClient-applikationen. Vid uppstart kopplar applikationen * upp sig mot servern, skapar ett Input-objekt som lyssnar på meddelanden från * servern , samt skapar det grafiska användargränssnittet som användaren använder för * att ge och få information . När användaren markerart att ett meddelande skall sändas * kommer GUIet att anropa kontrollklassens sendMessage-metdod med meddelandet som * argument, kontrollklassen skapar då ett nytt Output-objekt, som i en ny tråd sänder * meddelandet till servern. När Input-objektet tagit emot ett meddelande från servern * kommer det att anropa kontrollklassens appendMessage-metod med meddelandet som argument, * kontrollklassen kommer sedan att skicka detta vidare till GUIet * * @author Henrik Johansson, DS80 * @version ht2001 */ public class ChatClient { private ChatClientGUI gui; private InetAddress address; private int port; private Socket socket; private OutputStream outputStream; private InputStream inputStream; private Input input; /** Skapar ett nytt ChatClient-objekt. Använder defaultvärdena host: 127.0.0.1 och port: 2000*/ public ChatClient() { this("127.0.0.1", 2000); } /** Skapar ett nytt ChatClient-objekt. Använder defaultvärdet port: 2000*/ public ChatClient(String address) { this(address, 2000); } /** Skapar ett nytt ChatClient-objekt. Kopplar upp sig mot severn, skapar ett nytt * Input-objekt samt ett nytt ChatClientGUI-objekt. */ public ChatClient(String address, int port) { try { this.address = InetAddress.getByName(address); this.port = port; socket = new Socket(this.address, port); gui = new ChatClientGUI(this); gui.updateTitle(address, port); gui.show(); outputStream = socket.getOutputStream(); inputStream = socket.getInputStream(); input = new Input(this, inputStream); } catch(UnknownHostException e) { System.err.println(e.toString()); System.exit(1); } catch(IOException e) { System.err.println(e.toString()); System.exit(2); } } /** Avslutar ChatClient-applikationen. Stänger in- och utströmmarna samt socketen*/ public void exit() { try { outputStream.close(); inputStream.close(); socket.close(); } catch (IOException e) { System.out.println(e); System.exit(4); } System.exit(0); } /** Förmeddlar användarens meddelanden från GUIet till servern genom att skapar * ett Output-objekt, som i en egen tråd skickar meddelandet till servern. * *@param message Meddelandet som skall skickas till servern */ public void sendMessage(String message) { new Output(outputStream, message); } /** Förmedlar meddelanden från Input-objektet till GUIet * *@param message Meddelande som skall skickas vidare till GUIet */ public void appendMessage(String message) { gui.appendMessage(message); } /** ChatClient-applikationens mainmetod * * @param args the kommandoargument */ public static void main (String args[]) { try { if(args.length == 0) new ChatClient(); else if(args.length == 1) new ChatClient(args[0]); else new ChatClient(args[0], Integer.parseInt(args[1])); } catch (NumberFormatException e) { System.out.println(e); System.exit(3); } } }