I have the following socket server in java,
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class MiddleSocket { private ServerSocket middleman; private int port = 1027; private Socket client; protected void createSocketServer() { try { middleman = new ServerSocket(port); client = middleman.accept(); middleman.close(); PrintWriter out = new PrintWriter(client.getOutputStream(),true); BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream())); BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in)); while(true) { System.out.println("echo: " + in.readLine()); out.println("test"); } } catch(IOException e) { System.out.println(e); } } }
It works correctly in the way it reads from the client and everything. However, I want the socket server to only try to read and read when there is a message from the client, because in the loop it continues to read, even if messages from the client are not received, it gives a heap
echo: null
Is there some mechanism that is less than wait() to have a while loop, to know, to just sit and wait, and then run when a message is sent from the client to read this message, and as soon as this message is read, and the answer will be sent, and then just sit idle until the next message is received from the client?
source share