/* * ChatClient.java */ import java.io.*; import java.net.*; public class ChatClient extends Thread { Socket socket; PrintStream ps; BufferedReader br; boolean fini; public ChatClient(String nomServeur) throws IOException { // crée et connecte le socket au serveur socket = new Socket(nomServeur, 2000); // crée les flux depuis/vers le serveur ps = new PrintStream(socket.getOutputStream()); br = new BufferedReader(new InputStreamReader(socket.getInputStream())); } // Réception et Affichage des messages public void run() { try { String s; while(!fini) { // on lit sur le flux du socket s = br.readLine(); // on écrit sur la sortie standard (l'écran) System.out.println(s); } // on ferme le socket socket.close(); } catch(IOException e) { e.printStackTrace(); } } // Lecture et Envoi des messages public void envoi() throws IOException { // crèe un BufferedReader pour lire sur le clavier BufferedReader entreeStandard = new BufferedReader(new InputStreamReader(System.in)); String s; System.out.println("Tapez vos messages (fin = stop)"); while(!fini) { // on lit sur l'entrée standard (le clavier) s = entreeStandard.readLine(); // si on a tapé fini if (s.equals("fin")) // c'est la fin fini = true; // on écrit sur le flux du socket ps.println(s); } } public static void main (String args[]) { try { BufferedReader fluxEntreeStandard = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Tapez le nom de la machine serveur : "); String reponse = fluxEntreeStandard.readLine(); ChatClient c = new ChatClient(reponse); // lance le thread qui reçoit et écrit c.start(); // appelle la méthode qui lit et envoit c.envoi(); } catch (UnknownHostException ex) { System.err.println("Machine inconnue : "+ex); ex.printStackTrace(); } catch (IOException ex) { System.err.println("Erreur : "+ex); ex.printStackTrace(); } } }