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

时间:2015-01-30 00:36:27

标签: java tcp go client-server tcpclient

我在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终止并强制服务器不断等待更多客户端请求?

1 个答案:

答案 0 :(得分:0)

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

e.g。

while (true) {
   // above code
}

对于足够的游戏应用程序。