我在Java中有一个简单的echo-server:
int portNumber = 4444;
try (
ServerSocket serverSocket =
new ServerSocket(Integer.parseInt(args[0]));
Socket clientSocket = serverSocket.accept();
PrintWriter out =
new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
) {
String inputLine;
while ((inputLine = in.readLine()) != null) {
out.println(inputLine);
System.out.println(inputLine);
}
} catch (IOException e) {
System.out.println("Exception caught when trying to listen on port "
+ portNumber + " or listening for a connection");
System.out.println(e.getMessage());
}
和一个简单的golang客户端:
func main() {
fmt.Println("start client")
conn, err := net.Dial("tcp", "localhost:4444")
if err != nil {
log.Fatal("Connection error", err)
}
conn.Write([]byte("hello world"))
conn.Close()
fmt.Println("done")
}
当我启动服务器然后运行客户端时,服务器echo按预期“hello world”,然后服务器退出/终止。
问。如何阻止此Java终止并强制服务器不断等待更多客户端请求?
答案 0 :(得分:0)
当客户端终止时,服务器端的readLine
将导致流的结束。因此,如果您希望服务器持续监听新连接,只需将上述服务器代码放在无限循环中即可。
e.g。
while (true) {
// above code
}
对于足够的游戏应用程序。