这是一个基本的 Java 服务器 ( source ),但我不太明白,因为我对 while(true)
部分很好奇,它什么时候终止?
public static void main(String[] args) throws IOException {
ServerSocket listener = new ServerSocket(9090);
try {
while (true) {
Socket socket = listener.accept();
try {
PrintWriter out =
new PrintWriter(socket.getOutputStream(), true);
out.println(new Date().toString());
} finally {
socket.close();
}
}
}
finally {
listener.close();
}
}
我们如何才能到达最后一部分
finally {
listener.close();
或者它只是标准网络代码,具有 while(true)
?
最佳答案
如果抛出异常,循环就会被打破。
Java 中与 IO 相关的代码,当失败时,几乎总是会抛出一个异常,指出失败的原因。您可以在http://docs.oracle.com/javase/6/docs/api/java/io/package-summary.html中查找正在调用的方法。例如,看看它可以抛出什么异常。
while(true)
是守护进程、服务器等主循环的常见习惯用法,您希望它们永远不会停止运行,或者以抛出异常的形式停止。
关于java - 在这个Java套接字代码中,这个无限循环是否会因套接字关闭而终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15397634/