Search code examples
javatcpsocket.ioinfinite-looptcpclient

Why my program is going on Infinite loop when i am trying to read multiple line input from TCP Server


This is my TCP client java code:

socket = new Socket("127.0.0.1", 8088);
out = new DataOutputStream(socket.getOutputStream());
inputStream = socket.getInputStream();
inputReader = new BufferedReader(new InputStreamReader(inputStream));
String result = "";
while (inputStream != null) {
    result += inputReader.readLine();
}
out.writeUTF(result);
System.out.println(result);

socket.close();
out.close();

The while loop is getting executed infinitely.

I need a solution for this problem.


Solution

  • You need to check when readLine() returns null, not when inputStream becomes null (which it never will):

    string s = inputReader.readLine();
    while (s != null) {
        result += s;
        s = inputReader.readLine();
    }
    

    Or:

    string s;
    while ((s = inputReader.readLine()) != null) {
        result += s;
    }