Este es el código de la lección sobre Udemy.
No entiendo cómo funciona el boolean stop;
en este bucle while. No veo ningún cambio de stop
dentro del ciclo.
¿Alguien puede explicarme cómo funciona el bucle while en este caso particular?
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());
}
}
}
2 respuestas
De hecho, no hay ningún cambio de stop
en el ciclo, lo que significa que el ciclo nunca se detendrá, a menos que se lance una excepción.
Dado que es un servidor, escuchando sockets, este es un comportamiento esperado: el servidor sigue escuchando y sirviendo a los clientes.
Tenga en cuenta que en el código de producción, debería haber una forma de detener el servidor, que, según el enfoque, puede requerir o no detener ese bucle (hay formas asincrónicas disponibles).
Ese es el punto; una vez que comienza, el ciclo no se detendrá a menos que algo salga muy mal.
Nuevas preguntas
java
Java es un lenguaje de programación de alto nivel. Utilice esta etiqueta cuando tenga problemas para usar o comprender el idioma en sí. Esta etiqueta rara vez se usa sola y se usa con mayor frecuencia junto con [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] y [maven].