You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
3.8 KiB
97 lines
3.8 KiB
SERVIDOR DE ESTADO DE CLIENTES
|
|
|
|
REQUISITOS
|
|
|
|
· Servidor multiusuario
|
|
· Controla en todo momento cuantos clientes tiene conectados (hilos)
|
|
· Un cliente cuando se conecta envía su propio nombre.
|
|
· Cada 5 minutos envía un mensaje a todos los clientes indicando el número de ordenadores que tiene conectado.
|
|
· Si un cliente se desconecta, envía un mensaje a todos avisando que se ha desconectado
|
|
|
|
------------
|
|
| SERVIDOR |
|
|
------------
|
|
|
|
-- MÉTODO INICIAR SERVIDOR
|
|
|
|
Este método se encarga de iniciar el servidor. Toma como argumentos el host (dirección IP) y el puerto en el que se escucharán las conexiones entrantes de los clientes, con ello crea un socket y lo enlaza al host y puerto especificado.
|
|
|
|
Pone el socket en modo de escucha para aceptar conexiones entrantes e inicia un bucle infinito para escuchar conexiones.
|
|
Por cada conexión entrante, crea un hilo separado para manejar al cliente.
|
|
|
|
|
|
-- MANEJAR_CLIENTES
|
|
|
|
Este metodo maneja la forma de interactuar del cliente con el servidor de forma individual, recibe como argumentos el socket del cliente y el diccionario de los clientes conectados.
|
|
|
|
Espera a recibir el nombre del cliente y luego lo agrega al diccionario.
|
|
|
|
|
|
En un bucle infinito, espera 5 segundos y luego:
|
|
Actualiza la lista de usuarios y el contador de usuarios en la interfaz gráfica del servidor.
|
|
Envía al cliente un mensaje con el número de clientes conectados.
|
|
Maneja cualquier excepción que pueda ocurrir durante la comunicación con el cliente, eliminando al cliente del diccionario y cerrando su socket.
|
|
Informa a los demás clientes sobre la desconexión del cliente actual.
|
|
|
|
|
|
ACTUALIZAR LISTA USUARIOS
|
|
|
|
Este método actualiza la lista de usuarios en la interfaz gráfica del servidor.
|
|
Este método se encarga de actualizar la lista de usuarios de la interfaz gráfica asocciada al servidor, como argumentos recibe el diccionario de clientes y obtiene los nombres.
|
|
|
|
Cada vez limia la interfaz y los agrega a la vista.
|
|
|
|
ACTUALIZAR CONTADOR USUARIOS
|
|
|
|
Este método actualiza el contador de usuarios en la interfaz gráfica del servidor, recibe como argumento el contador de usuarios.
|
|
Actualiza el texto del contador con el número de usuarios conectados.
|
|
|
|
|
|
GENERAR INTERFAZ
|
|
|
|
Este métods se encarga de generar la interfaz grafica estableciendo el diseño correspondiente,
|
|
con un contador y una lista de usuarios conectados.
|
|
Espera en bucle la interaccion de los clientes.
|
|
|
|
MAIN
|
|
|
|
Simplemente es el bloque de inicializacion de la aplicacion
|
|
|
|
------------
|
|
| CLIENTE |
|
|
------------
|
|
|
|
PRINCIPAL:
|
|
|
|
Esta funcion se encarga de generar la interfaz gráfica del cliente, utilizando Tkinter,
|
|
ademas de establecer una entrada de texto para el nombre del cliente junto con dos botones para
|
|
enviar el nombre del cliente al servidor y desconectarse del mismo.
|
|
Esta función es el punto de entrada principal para la interfaz gráfica del cliente.
|
|
|
|
Establece los eventos de clic de los botones para llamar a las funciones correspondientes enviar_nombre_callback y desconectar.
|
|
|
|
ENVIAR NOMBRE
|
|
|
|
Esta función se encarga de enviar el nombre ingresado por el usuario al servidor.
|
|
Recibe como argumentos el nombre ingresado por el usuario, el campo de entrada de nombre y el botón de enviar.
|
|
|
|
Si la conexión esta en modo activa, envia el nombre al servidor utilizando el socket del cliente.
|
|
Espera recibir la respuesta del servidor para imprimirlo por consola.
|
|
|
|
Deshabilita el campo de entrada y el botón de enviar después de enviar el nombre para evitar que el cliente haga envios repetidos.
|
|
|
|
|
|
DESCONECTAR
|
|
|
|
Esta función se encarga de desconectar al cliente del servidor.
|
|
Si la conexión está activa (true), envía al servidor un mensaje para desconectarse y cierra el socket del cliente.
|
|
Después de desconectar, cambia el estado de conectado (false).
|
|
|
|
|
|
MAIN
|
|
|
|
Simplemente es el bloque de inicializacion de la aplicacion
|
|
|
|
|
|
|