title: sending multiple byte array over the socket
body: <p>I want to send multiple byte array from the client and server ?</p>
  
  <p>I was able to send/Receive one byte array from client and send / Receive one byte array from server :</p>
  
  <p>My code is like this :</p>
  
  <p>server :</p>
  
  <pre><code> Socket sock=null;
    ByteArrayOutputStream input=null;
    OutputStream out=null;
      InputStream in=null;
    try{
        ServerSocket server_sock=new ServerSocket(2972);
  
  
      sock=server_sock.accept(); 
  
     in = 
         sock.getInputStream();
      out=sock.getOutputStream();
      }catch(IOException e){
        System.out.println(e.getMessage());
    }
   String word="";
  
    //1-Receive
  
    try{
  
      ByteArrayOutputStream serverinput=new ByteArrayOutputStream();
   int len=0;
  byte[] buf=new byte[1000];
          while ((len = in.read(buf))&gt;=0) {
                serverinput.write(buf, 0, len);
  
          }
  
        sock.shutdownInput();
  
          word=new String(serverinput.toByteArray());
      System.out.println("Client send 1"+word);
  
      }catch(Exception e){
        System.out.println(e.getMessage());
    }
  
  
     String st="Server is a king";
  try{ 
     out.write(st.getBytes());
  
     out.flush();
  
  }catch(Exception e){
        System.out.println(e.getMessage());
    }
  </code></pre>
  
  <hr>
  
  <p>client :</p>
  
  <pre><code> Socket sock=null;
      OutputStream out=null;
      InputStream in=null;
  
  
    try{
        sock=new Socket("127.0.0.1",2972);
        }catch(IOException e){
        System.out.println(e.getMessage());
    }
  
  
  String word="Hellow World"  ;
      try{
      in = 
         sock.getInputStream();
      out=sock.getOutputStream();
      }catch(IOException e){
        System.out.println(e.getMessage());
    }
  
  //1- send
     try{
  
         System.out.println("Your string is"+word+"converted to byte"+word.getBytes());
  
      out.write(word.getBytes());
      out.flush();
   sock.shutdownOutput();
      }catch(Exception e){
        System.out.println(e.getMessage());
    }
  
      try{  ByteArrayOutputStream serverinput=new ByteArrayOutputStream();
   int len=0;
  byte[] buf=new byte[1000];
          while ((len = in.read(buf))&gt;=0) {
                serverinput.write(buf, 0, len);
  
  
          }
      System.out.println("server send 1 "+new String(serverinput.toByteArray()));
       System.out.println("Your string is"+word+"converted to byte"+word.getBytes());
  
      }catch(Exception e){
        System.out.println(e.getMessage());
    }
  </code></pre>
  
  <hr>
  
  <p>This code is working fine for one submitting from client and server but it does not work when I want to send / receive more byte array ?</p>
  
  <p>It is working only when I use shutdown because both client and server reading and writing  to the data.</p>
  
  <p>Therefore, I can not use the socket channel again ... is there is alternative solution? ...that does not lead to deadlock. </p>