import java.net.*; import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Client7 { public static final int PORT = 2000; private Socket socket; private BufferedReader in; private PrintWriter out; private BufferedReader kbd_reader; private ChatButtonWindow window; private JTextField outputField; private class ServerListener extends Thread { public void run() { String lineFromServer; try { while ((lineFromServer = in.readLine()) != null && !lineFromServer.equals("quit")) { System.out.println("Från servern: " + lineFromServer); outputField.setText(lineFromServer); } } catch (IOException e) { System.out.println("Undantag fångat: " + e); } } } // class ServerListener private class ChatButtonWindow extends JFrame { private PrintWriter out; public ChatButtonWindow(PrintWriter outParameter) { super("Extra chat buttons"); out = outParameter; Container cp = getContentPane(); cp.setLayout(new FlowLayout()); JButton button1 = new JButton("Skicka förolämpning"); cp.add(button1); button1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { out.println("Ni, min herre, är en apa."); System.out.println( "Skickade en förolämpning."); } }); JButton button2 = new JButton("Skicka beröm"); cp.add(button2); button2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { out.println("Du är bäst!"); System.out.println("Skickade beröm."); } }); JButton button3 = new JButton("Avsluta"); cp.add(button3); button3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { System.out.println("Avslutar."); System.exit(0); } }); outputField = new JTextField(30); outputField.setEditable(false); cp.add(outputField); setSize(400, 100); setVisible(true); } } // class ChatButtonWindow public Client7(String serverName) throws IOException { InetAddress addr = InetAddress.getByName(serverName); Socket socket = new Socket(addr, PORT); System.out.println("Den nya socketen: " + socket); in = new BufferedReader( new InputStreamReader( socket.getInputStream())); out = new PrintWriter( new BufferedWriter( new OutputStreamWriter( socket.getOutputStream())), true); // true: PrintWriter is line buffered kbd_reader = new BufferedReader( new InputStreamReader(System.in)); window = new ChatButtonWindow(out); ServerListener t = new ServerListener(); t.start(); } // Client7 void listen() throws IOException { String buf; while (true) { buf = kbd_reader.readLine(); System.out.println("Från tangentbordet: " + buf); System.out.println("Till servern: " + buf); out.println(buf); } } public static void main(String[] args) throws IOException { Client7 c; if (args.length >= 1) c = new Client7(args[0]); else c = new Client7(null); c.listen(); } // main } // class Client7