import java.net.*; import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Klient { public static final int PORT = 2000; private Socket socket; private BufferedReader in; private PrintWriter out; private BufferedReader kbd_reader; private Fönstret 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 Fönstret extends JFrame { private PrintWriter out; private JLabel namnlabel = new JLabel("Namn: "); private JTextField namnfältet = new JTextField(15); JButton anslutningsknappen = new JButton("Anslut"); JButton nerkopplingsknappen = new JButton("Koppla ner"); JButton larmknappen = new JButton("Hjälp!"); private JTextField larmfältet = new JTextField(20); public Fönstret(PrintWriter outParameter) { super("Taxiklienten"); out = outParameter; Container cp = getContentPane(); cp.setLayout(new FlowLayout()); cp.add(namnlabel); cp.add(namnfältet); cp.add(anslutningsknappen); cp.add(nerkopplingsknappen); cp.add(larmknappen); cp.add(larmfältet); anslutningsknappen.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { out.println("Ni, min herre, är en apa."); System.out.println( "Skickade en förolämpning."); } }); nerkopplingsknappen.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { out.println("Du är bäst!"); System.out.println("Skickade beröm."); } }); larmknappen.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { out.println("Du är bäst!"); System.out.println("Skickade beröm."); } }); setSize(400, 100); setVisible(true); } } // class Fönstret public Klient(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 Fönstret(out); ServerListener t = new ServerListener(); t.start(); } // Klient 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 { Klient c; if (args.length >= 1) c = new Klient(args[0]); else c = new Klient(null); c.listen(); } // main } // class Klient