import java.net.*; import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; final class ServerListener extends Thread { private final BufferedReader fromServer; public ServerListener(BufferedReader fromServer) { this.fromServer = fromServer; } public void run() { String lineFromServer; try { while ((lineFromServer = fromServer.readLine()) != null && !lineFromServer.equals("quit")) { System.out.println("Från servern: " + lineFromServer); } } catch (IOException e) { System.out.println("Undantag fångat: " + e); } } } // class ServerListener class ChatButtonWindow extends JFrame { private final PrintWriter toServer; public ChatButtonWindow(PrintWriter to) { super("Extra chat buttons"); this.toServer = to; 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) { toServer.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) { toServer.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); } }); setSize(200, 200); setVisible(true); } } // class ChatButtonWindow public class Client3 { public static final int PORT = 2000; public static void main(String[] args) throws IOException { InetAddress addr; if (args.length >= 1) addr = InetAddress.getByName(args[0]); else addr = InetAddress.getByName(null); Socket socket = new Socket(addr, PORT); System.out.println("Den nya socketen: " + socket); BufferedReader in = new BufferedReader( new InputStreamReader(socket.getInputStream())); PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter( socket.getOutputStream())), true); // true: PrintWriter is line buffered BufferedReader kbd_reader = new BufferedReader( new InputStreamReader(System.in)); ServerListener t = new ServerListener(in); t.start(); ChatButtonWindow w = new ChatButtonWindow(out); String buf; while (true) { buf = kbd_reader.readLine(); System.out.println("Från tangentbordet: " + buf); System.out.println("Till servern: " + buf); out.println(buf); } } // main } // class Client3