防止服务器在客户端 (golang) 服务器 (Java) 应用程序中终止

Prevent server terminating in client (golang) server (Java) application

我在 Java 中有一个简单的回显服务器:

 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")
}

当我启动服务器然后 运行 客户端时,服务器按预期回显 "hello world",然后服务器 exits/terminates。

问。如何防止此 Java 终止并强制服务器继续等待更多客户端请求?

当客户端终止时,服务器端的 readLine 将导致流结束。因此,如果您希望服务器持续侦听新连接,只需将上述服务器代码置于无限循环中即可。

例如

while (true) {
   // above code
}

对于播放应用程序来说已经足够了。