TD2: Make the client send and receive object message.
[TD_SR.git] / TD2 / client / SocketClient.java
index 8bc5d4f7f81567253779c019e330908dca950a49..814d68a1ef3a62b74e72120a9d2e9b74bb7bb187 100644 (file)
@@ -5,6 +5,8 @@ import java.util.*;
 public class SocketClient {
     BufferedReader lecture;  // pour le flot d'entrĂ©e venant du serveur
     PrintWriter ecriture;  // pour le flot de sortie vers le serveur
+    ObjectInput oLecture;
+    ObjectOutput oEcriture;
     Socket sock; // le socket client
 
     public SocketClient() {
@@ -42,16 +44,20 @@ public class SocketClient {
         IStream = sock.getInputStream();
         InputStreamReader IMesg = new InputStreamReader(IStream);
         lecture = new BufferedReader(IMesg);
+        oLecture = new ObjectInputStream(IStream);
 
         OutputStream OStream = null;
         OStream = sock.getOutputStream();
         ecriture = new PrintWriter(OStream);
+        oEcriture = new ObjectOutputStream(OStream);
     }
 
     private void attributesInit() {
+        sock = null;
         lecture = null;
         ecriture  = null;
-        sock = null;
+        oLecture = null;
+        oEcriture = null;
     }
 
     /**
@@ -63,6 +69,15 @@ public class SocketClient {
         ecriture.flush();
     }
 
+    /**
+     * Send an object message on the opened client socket
+     * @param msg a string containing the message to send
+     */
+    public void sendoMsg(Message oMsg) throws IOException {
+        oEcriture.writeObject(oMsg);
+        oEcriture.flush();
+    }
+
     /**
      * Receive a message sent on the opened client socket
      * @return a string containing the received message
@@ -74,6 +89,14 @@ public class SocketClient {
         return line;
     }
 
+    /**
+     * Receive an object message sent on the opened client socket
+     * @return a string containing the received message
+     */
+    public Message receiveoMsg() throws IOException, ClassNotFoundException {
+        return (Message)oLecture.readObject();
+    }
+
     /**
      * Close all opened I/O streams attached to this object instance
      */
@@ -85,6 +108,11 @@ public class SocketClient {
                 lecture.close();
             if (ecriture != null)
                 ecriture.close();
+            if (oLecture != null)
+                oLecture.close();
+            if (oEcriture != null) {
+                oEcriture.close();
+            }
         }
         catch (IOException e) {
             System.err.println("IOException: " + e);