这是Udemy课程中的代码。
我不明白 boolean stop;
在循环时如何工作。我看不到循环内stop
的任何更改。
有人可以向我解释我在这种特殊情况下循环工作时如何工作。
package socket;
import java.io.*;
import java.net.*;
public class MultiUserService
{
public static void main(String [] args) //throws Exception
{
try
{
ServerSocket serverSocket = new ServerSocket(9090);
System.out.println("wainting for clients...");
boolean stop = false;
while(!stop)
{
Socket socket = serverSocket.accept();
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println("Hello client!");
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String clientInput = input.readLine();
System.out.println(clientInput);
input.close();
out.close();
socket.close();
}
serverSocket.close();
} catch (Exception e)
{
System.out.println(e.toString());
}
}
}
的确,循环中没有stop
的变化,这意味着循环永远不会停止,除非抛出例外。
由于它是服务器,聆听插座,这是一种预期的行为:服务器不断聆听和为客户端服务。
请注意,在生产代码中,应该有一种停止服务器的方法,根据方法,该服务器可能需要或不需要实际停止该循环(有一些异步方法(。
这就是要点;一旦启动,除非有什么问题,否则循环将不会停止。