title: why client can not receive message from server (java)
body: <p>I have just started learning java. I modified the client side code for a server/client communication program, by creating two threads for the client side, main thread for receiving user's input, and inputThread for receiving server's response. I am sure that server has sent the response to client, however, no response message is obtain at client.</p>
  
  <p>Here is my code. Can anyone help me to figure it out? Thanks</p>
  
  <pre><code>package clientnio;
  
  import java.net.*; 
  import java.nio.*; 
  import java.io.*;
  import java.nio.channels.*; 
  import java.util.Scanner; 
  
  public class ClientNIO {
  public static int bufferLen = 50;
  public static SocketChannel client;
  public static ByteBuffer writeBuffer;
  public static ByteBuffer readBuffer;
  
  public static void main(String[] args) { 
      writeBuffer = ByteBuffer.allocate(bufferLen);
      readBuffer = ByteBuffer.allocate(bufferLen);
  
      try { 
          SocketAddress address = new InetSocketAddress("localhost",5505); 
          System.out.println("Local address: "+ address);
          client=SocketChannel.open(address);
          client.configureBlocking(false); 
  
          //readBuffer.flip();
          new inputThread(readBuffer);
  
          /*
          String a="asdasdasdasddffasfas"; 
          writeBuffer.put(a.getBytes()); 
          writeBuffer.clear();  
          int d=client.write(writeBuffer);
          writeBuffer.flip();
          */
  
          while (true) {
              InputStream inStream = System.in;
              Scanner scan = new Scanner(inStream);
              if (scan.hasNext()==true) {
                  String inputLine = scan.nextLine();
                  writeBuffer.put(inputLine.getBytes()); 
                  //writeBuffer.clear();
                  System.out.println(writeBuffer.remaining());
                  client.write(writeBuffer);
                  System.out.println("Sending data: "+new String(writeBuffer.array()));
                  writeBuffer.flip(); 
                  Thread.sleep(300);
              }
          }                 
      } 
      catch(Exception e) { 
          System.out.println(e);
      } 
  
  }
  }
  
  class inputThread extends Thread {
  private ByteBuffer readBuffer;
  public inputThread(ByteBuffer readBuffer1) {  
      System.out.println("Receiving thread starts.");
      this.readBuffer = readBuffer1;
      start();
  }
  
  @Override
  public void run() {
      try {
          while (true) {
              readBuffer.flip();
              int i=ClientNIO.client.read(readBuffer); 
              if(i&gt;0) { 
                  byte[] b=readBuffer.array(); 
                  System.out.println("Receiving data: "+new String(b)); 
                      //client.close(); 
                      //System.out.println("Connection closed."); 
                      //break; 
              }
              Thread.sleep(100); 
          }
      }
      catch (Exception e) {
         System.out.println(e);
      }
    }
  }
  </code></pre>