简体   繁体   中英

Java socket programming writebytes to readline

I am trying to get a java server and client communicating. For streaming data to the server I have this code:

  Socket ClientSocket = null;
ClientSocket = new Socket(IPAddress, portInt); 
DataOutputStream outToClient = new DataOutputStream(ClientSocket.getOutputStream());

    outToClient.writeBytes(command);
    outToClient.flush();

And for the server I have:

        ServerSocket mysocket = new ServerSocket(8081);
        Socket connectionsocket = mysocket.accept();

        BufferedReader inFromClient =
           new BufferedReader(new InputStreamReader(connectionsocket.getInputStream()));

        DataOutputStream outToClient = new DataOutputStream(connectionsocket.getOutputStream());

        //program hangs here, client not sending

        GetRequest = inFromClient.readLine();
        System.out.println("Received: " + GetRequest);

These are only short portions of the overall code, I have found that the program hangs on the server side when the readLine(); is reached. I am trying to send data with writeBytes(command); where command is a string. Any suggestions? thanks.

writebytes to readline

Stop right there. If you're using readLine() you're using BufferedReader , which is a Reader , which means you should be using a Writer to talk to it, which means you should be using a BufferedWriter , and as you're reading lines you must write lines, which means writing a line terminator (which you aren't presently doing), which means you should use BufferedWriter.newline() .

Or PrintWriter.println(), but don't forget to check for errors, as it swallows exceptions.

Don't directly use readLine

Instead try this

If( inFromClient.ready()){
   // read string here.
}

It might be possible that buffer is not ready and you are trying to read. So it can create problem.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM