import java.io.*; import java.net.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Client extends JFrame { JTextField entry = new JTextField(30); JTextArea result = new JTextArea(10, 30); String host; int port; public static void main(String argv[]) { if (argv.length != 2) { System.out.println("usage: command host port"); System.exit(1); } new Client(argv[0], argv[1]); } public Client(String host, String port) { this.host = host; this.port = Integer.parseInt(port); Container contentPane = getContentPane(); // BorderLayout = disposition de type "points cardinaux" contentPane.setLayout(new BorderLayout()); // --- ActionListener ------------- ActionListener al = new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println(">Entry:" + entry.getText()); String retour = Discute(entry.getText()); System.out.println(">Result: " + retour); entry.setText(""); //result.setText(retour); result.append(retour + "\n"); } }; // --- Ligne1 --------------------- JPanel ligne1 = new JPanel(); contentPane.add(BorderLayout.NORTH, ligne1); ligne1.setLayout(new BorderLayout()); ligne1.add(BorderLayout.WEST, new JLabel("Result:")); JButton quit = new JButton("Exit"); ligne1.add(BorderLayout.EAST, quit); quit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); // --- Ligne2 --------------------- JScrollPane ligne2 = new JScrollPane(result); contentPane.add(BorderLayout.CENTER, ligne2); // --- Ligne3 --------------------- JPanel ligne3 = new JPanel(); contentPane.add(BorderLayout.SOUTH, ligne3); ligne3.add(new JLabel("Enter: ")); ligne3.add(entry); entry.addActionListener(al); JButton send = new JButton("Send"); ligne3.add(send); send.addActionListener(al); // --- Ouvrir le Frame ------------ setTitle("Client"); pack(); show(); } String Discute(String mess) { String p = host + ":" + port; Socket server; try { server = new java.net.Socket(host, port); } catch (java.net.UnknownHostException e) { System.out.println("!couldn't find host: " + p + " : " + e); return null; } catch (java.io.IOException e) { System.out.println("!couldn't contact host: " + p + " : " + e); return null; } InputStream in; OutputStream out; try { in = server.getInputStream(); out = server.getOutputStream(); } catch (java.io.IOException e) { System.out.println("!couldn't create input and output streams: " + e); return null; } DataOutputStream to_server = new DataOutputStream(out); BufferedReader from_server = new BufferedReader(new InputStreamReader(in)); String retour; // recuperer message de debut de comm du serveur try { retour = from_server.readLine(); System.out.println("retour1: " + retour); } catch (java.io.IOException e) { System.out.println("couldn't read: " + e); return null; } // envoyer requete au serveur try { to_server.writeBytes(mess+".\n"); } catch (java.io.IOException e) { System.out.println("couldn't write: " + e); return null; } // recuperer le resultat envoye par serveur en retour try { retour = from_server.readLine(); System.out.println("retour2: " + retour); } catch (java.io.IOException e) { System.out.println("couldn't read: " + e); return null; } // si tout s'est bien passe: retourne le resultat return retour; } }