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());
        }
    }

}
-3
Qui-Gon Jinn 16 feb. 2018 a las 01:35

2 respuestas

La mejor respuesta

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).

2
Paul92 15 feb. 2018 a las 22:40

Ese es el punto; una vez que comienza, el ciclo no se detendrá a menos que algo salga muy mal.

1
hhoburg 15 feb. 2018 a las 22:38