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

我有一个简单的 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”,但随后服务器退出/终止。


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


米脂
浏览 211回答 1
1回答

慕容森

当客户端终止时,readLine服务器端将导致流结束。因此,如果您希望服务器持续侦听新连接,只需将上述服务器代码置于无限循环中即可。例如while (true) {   // above code}对于一个播放应用程序来说就足够了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go