防止服务器在客户端 (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
}
对于播放应用程序来说已经足够了。
我在 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
}
对于播放应用程序来说已经足够了。