title: Socket ObjectOutpuStream ObjectInputStream
body: <p>I'm writing simple client - server application. Everything is ok but when i change InputStream and OutputStream to ObjectOutputStream and ObjectInputStream my application doesn't send the messages. Can anyone help me and show me the problem ?</p>
  
  <p>Here is the Serwer.java:</p>
  
  <pre><code>class InWorke implements Runnable{
  
      BufferedReader odczyt=null;
      String slowo;
      ObjectInputStream ois=null;
      Message message;
  
      InWorke(ObjectInputStream ois) {
          this.ois=ois;
      }
  
      public void run() {
          while(true) {
              try {
                  slowo = (String) ois.readObject();
              } catch (ClassNotFoundException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              } catch (IOException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }
              System.out.println(slowo);
              Thread.yield();
          }               }
  
  }
  
  class OutWorke implements Runnable{
      Socket socket=null;
      BufferedReader odczytWe=null;
      DataOutputStream zapis=null;
      String slowo=null;
      Message message; // it is the simple class to serialization
      ObjectOutputStream oos;
  
      OutWorke(Socket socket,ObjectOutputStream oos) {
          this.socket=socket;
          this.oos=oos;
      }
  
      public void run() {
          while(true) {
              odczytWe=new BufferedReader(new InputStreamReader(System.in));
              try {
                  slowo=odczytWe.readLine();
              } catch (IOException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }
              try {
                      oos.writeObject(slowo);
                      oos.flush();
                  } catch (IOException e1) {
                      // TODO Auto-generated catch block
                      e1.printStackTrace();
                  }
              Thread.yield();
  
      }
  
  }
  }
  
  public class Klient {
      public static void main(String[] args) {
  
      Socket socket=null;
      ExecutorService exec=Executors.newCachedThreadPool();
  
      ObjectOutputStream oos=null;
      ObjectInputStream ois=null;
  
      try {
          socket=new Socket("localhost", 8881);
      } catch (UnknownHostException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }
      try {
          //we=socket.getInputStream();
          ois=new ObjectInputStream(socket.getInputStream());
      } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }
      try {
          //wy=socket.getOutputStream();
          oos=new ObjectOutputStream(socket.getOutputStream());
      } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }
  
      exec.execute(new OutWorke(socket, oos));
      exec.execute(new InWorke(ois));
  
   }
  } 
  </code></pre>
  
  <p>Klient.java:</p>
  
  <pre><code>class InWorker implements Runnable{
  
      Socket socket=null;
      //InputStream we=null;
      //OutputStream wy=null;
      String slowo=null;
      BufferedReader odczyt=null;
      ObjectOutputStream oos;
      ObjectInputStream ois;
      Message message=null;
  
      InWorker(Socket socket,ObjectInputStream ois) {
          this.socket=socket;
          this.ois=ois;
      }
  
      public void run() {
                  while(true) {
                  try {
                      slowo=(String) ois.readObject();
                  } catch (ClassNotFoundException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                  } catch (IOException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                  }
                  System.out.println(slowo);
                  Thread.yield();
              }
  
              }
  }
  
  class OutWorker implements Runnable{
  
      DataOutputStream zapis=null;
      BufferedReader odczyt=null;
      //OutputStream wy=null;
      String tekst=null;
      ObjectOutputStream oos=null;
      Message message;
  
      OutWorker(ObjectOutputStream oos) {
          this.oos=oos;
      }
  
      public void run() {
          while(true) {
          odczyt=new BufferedReader(new InputStreamReader(System.in));
          try {
              tekst=odczyt.readLine();
          } catch (IOException e1) {
              // TODO Auto-generated catch block
              e1.printStackTrace();
          }
          try {
              oos.writeObject(tekst);
              oos.flush();
          } catch (IOException e1) {
              // TODO Auto-generated catch block
              e1.printStackTrace();
          }
          Thread.yield();
          }
      }
  
  }
  
  public class Serwer {
  
      public static void main(String[] args) {
          ServerSocket serversocket=null;
          Socket socket=null;
          //InputStream we=null;
          //OutputStream wy=null;
          ObjectOutputStream oos=null;
          ObjectInputStream ois=null;
  
          ExecutorService exec=Executors.newCachedThreadPool();
  
          try {
              serversocket=new ServerSocket(8881);
          } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
          try {
              socket=serversocket.accept();
          } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
          try {
              ois=new ObjectInputStream(socket.getInputStream());
          } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
          try {
              oos=new ObjectOutputStream(socket.getOutputStream());
          } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
          exec.execute(new InWorker(socket, ois));
          exec.execute(new OutWorker(oos));
  
      }
  
  }
  </code></pre>