title: how to send/receive Objects using sockets in java
body: <p>When I execute my code in the CMD window, it doesn't work in Client mode, exactly at the line:</p>
  
  <pre><code>ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
  ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
  </code></pre>
  
  <p>the program block on this line but don't stop or signal error :</p>
  
  <p>I have 3 classes: <code>Client</code>, <code>Server</code>, <code>Message</code></p>
  
  <h2>ClientClass:</h2>
  
  <pre><code>package client;
  
  // Organize imports     
  
  public class Client {
      public static void main(String[] args) throws UnknownHostException,
              IOException, ClassNotFoundException {
          System.out.println("welcome client");
          Socket socket = new Socket("localhost", 4444);
          System.out.println("Client connected");
          ObjectOutputStream os = new ObjectOutputStream(socket.getOutputStream());
          System.out.println("Ok");
          Message message = new Message(new Integer(15), new Integer(32));
          os.writeObject(message);
          System.out.println("Envoi des informations au serveur ...");
  
          ObjectInputStream is = new ObjectInputStream(socket.getInputStream());
          Message returnMessage = (Message) is.readObject();
          System.out.println("return Message is=" + returnMessage);
          socket.close();
      }
  }
  </code></pre>
  
  <h2>Server</h2>
  
  <p>Here is the code of the <code>Server</code> class</p>
  
  <pre><code>package Sockets;
  
  import java.io.IOException;
  import java.io.ObjectInputStream;
  import java.io.ObjectOutputStream;
  import java.net.ServerSocket;
  import java.net.Socket;
  
  public class Server {
      public static final int port = 4444;
      private ServerSocket ss = null;
  
      public void  runServer() throws IOException, ClassNotFoundException{
          ss = new ServerSocket(port);
          System.out.println("le systeme est pret pour accepter les connexions");
          Socket socket = ss.accept();
          ObjectInputStream is = new ObjectInputStream(socket.getInputStream());
          ObjectOutputStream os = new ObjectOutputStream(socket.getOutputStream());
  
          Message m = (Message) is.readObject();
          doSomething(m);
  
          os.writeObject(m);
          socket.close(); 
      }
  
      private void doSomething(Message m) {
          m.setResult(new Integer(m.getA().intValue()*m.getB().intValue()));
      }
  
      public static void main(String[] args) throws ClassNotFoundException, IOException {
          new Server().runServer();
      }
  }
  </code></pre>
  
  <h2>Message</h2>
  
  <p>And here is my object , I made it <code>Serializable</code> by implementing the interface <code>Serializable</code></p>
  
  <pre><code>import java.io.Serializable;
  
  public class Message implements Serializable {
      private static final long serialVersionUID = -5399605122490343339L;
  
      private Integer A;
      private Integer B;
      private Integer Result; 
  
      public Message(Integer firstNumber, Integer secondNumber ){
          this.A = firstNumber; 
          this.B = secondNumber;
      }
  
      public Integer getA() {
          return A;
      }
  
      public Integer getB() {
          return B;
      }
  
      public void setResult(Integer X)  {
          Result = X;
      }
  }
  </code></pre>