X-Git-Url: https://git.piment-noir.org/?p=TD_SR.git;a=blobdiff_plain;f=TD2%2Fclient%2FSocketClient.java;h=b8e0c0b35491a30ae89bde0908b34ecbfb680697;hp=48a93eb75964660931a2f0cb16f18f082e51167d;hb=e018d1ec033513412d9b3628a7d6701a48725382;hpb=58312685472236da9be0138c9b5b450ca13387b1 diff --git a/TD2/client/SocketClient.java b/TD2/client/SocketClient.java index 48a93eb..b8e0c0b 100644 --- a/TD2/client/SocketClient.java +++ b/TD2/client/SocketClient.java @@ -10,77 +10,67 @@ public class SocketClient { public SocketClient() { // établie une connexion au serveur par un appel // à connexionServeur() - connexionServeur("localhost", 5000); + attributesInit(); + try { + connexionServeur("localhost", 5000); + } + catch (IOException e) { + System.err.println("IOException: " + e); + closeRWIO(); + } } public SocketClient(String adresseIPServeur, int portServeur) { // établie une connexion au serveur par un appel // à connexionServeur() - connexionServeur(adresseIPServeur, portServeur); - } - - private void connexionServeur(String adresseIPServeur, int portServeur) { - // créer un objet socket lié au socket serveur et l'affecte à sock - // puis établie les chaînages de flot nécessaires - // pour l'envoi et la reception de messages + attributesInit(); try { - sock = new Socket(adresseIPServeur, portServeur); + connexionServeur(adresseIPServeur, portServeur); } catch (IOException e) { System.err.println("IOException: " + e); + closeRWIO(); } + } + + private void connexionServeur(String adresseIPServeur, int portServeur) throws IOException { + // créer un objet socket lié au socket serveur et l'affecte à sock + // puis établie les chaînages de flot nécessaires + // pour l'envoi et la reception de messages + sock = new Socket(adresseIPServeur, portServeur); InputStream IStream = null; - try { - IStream = sock.getInputStream(); - } - catch (IOException e) { - System.err.println("IOException: " + e); - } + IStream = sock.getInputStream(); InputStreamReader IMesg = new InputStreamReader(IStream); lecture = new BufferedReader(IMesg); OutputStream OStream = null; - try { - OStream = sock.getOutputStream(); - } - catch (IOException e) { - System.err.println("IOException: " + e); - } + OStream = sock.getOutputStream(); ecriture = new PrintWriter(OStream); } + private void attributesInit() { + lecture = null; + ecriture = null; + sock = null; + } + /** * Send a message on the opened client socket * @param msg a string containing the message to send */ - public synchronized void sendMsg(String msg) { - //NOTE: it's not really required with one socket writer thread. - while (msg.isEmpty()) { - try { - wait(); - } - catch (InterruptedException e) { - System.err.println("InterruptedException: " + e); - } - } + public void sendMsg(String msg) { ecriture.println(msg); ecriture.flush(); - notifyAll(); } /** * Receive a message sent on the opened client socket * @return a string containing the received message */ - public String receiveMsg() { + public String receiveMsg() throws IOException { String line = new String(); - try { - //FIXME: read only the line before the ending newline - line = lecture.readLine(); - } - catch (IOException e) { - System.err.println("IOException: " + e); - } + //FIXME: read only the line before the ending newline + line = lecture.readLine(); return line; } @@ -88,9 +78,13 @@ public class SocketClient { * Close all opened I/O streams attached to this object instance */ public void closeRWIO() { - ecriture.close(); try { - lecture.close(); + if (sock != null) + sock.close(); + if (lecture != null) + lecture.close(); + if (ecriture != null) + ecriture.close(); } catch (IOException e) { System.err.println("IOException: " + e);