Socket-server, wartet auf Nachricht von client zu Lesen

Habe ich die folgenden 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);
        }
    }

}

Funktioniert es einwandfrei, wie es sich liest aus dem client und alles. Allerdings möchte ich den socket-server, nur versuchen, und Lesen, wenn es eine Nachricht vom client, da in der Schleife, die Sie hält zu Lesen, selbst wenn keine Nachrichten vom client empfangen werden, werden diese Ausgänge eine Reihe von

echo: null

Gibt es einen Mechanismus, kurze wait() zu haben, die while-Schleife zu kennen, um einfach nur sitzen und warten und dann auslösen, wenn eine Nachricht vom client zu Lesen, dass die Botschaft und einmal, die Nachricht Lesen und eine Antwort gesendet, dann sitzen Sie gerade im Leerlauf, bis die nächste Nachricht vom client empfangen wird?

InformationsquelleAutor jgr208 | 2014-10-20
Schreibe einen Kommentar