This commit is contained in:
Levi Planelles 2026-03-02 19:51:47 +01:00
parent 3d1031091e
commit 1dcda23411
1 changed files with 57 additions and 0 deletions

57
README.md Normal file
View File

@ -0,0 +1,57 @@
# Servidor de Chat en Python (PSP)
**VIDEO FUNCIONALIDAD**
https://youtu.be/OMbzm-YJ1Zg
**VIDEO EXPLICATIVO CÓDIGO**
https://youtu.be/EmwJFCWFms0
Este proyecto implementa un servidor de chat multihilo utilizando sockets TCP en Python. Es parte del módulo de Programación de Servicios y Procesos (PSP).
## Características
- **Multihilo:** Maneja múltiples clientes simultáneamente utilizando `threading`.
- **Broadcast:** Reenvía los mensajes recibidos de un cliente a todos los demás conectados.
- **Protocolo Simple:**
- Solicita el nombre al cliente al conectarse (`NAME?`).
- Soporta comandos básicos de administración.
- **Logs:** Muestra actividad del servidor (conexiones, mensajes) en la consola o interfaz configurada.
## Requisitos
- Python 3.x
## Instalación
No se requiere instalación de librerías externas, ya que utiliza la librería estándar de Python (`socket`, `threading`).
1. Clona el repositorio o descarga el archivo `chat_server.py`.
## Uso
Para iniciar el servidor, ejecuta el script desde la terminal:
```bash
python3 chat_server.py
```
Por defecto, el servidor escuchará en:
- **Host:** `0.0.0.0` (todas las interfaces)
- **Puerto:** `5050`
Puedes modificar las variables `DEFAULT_HOST` y `DEFAULT_PORT` en el código si necesitas cambiar la configuración predeterminada.
## Protocolo de Conexión
1. El cliente se conecta al socket del servidor.
2. El servidor envía la cadena `NAME?\n`.
3. El cliente debe responder con su nombre de usuario seguido de un salto de línea (p.ej., `MiUsuario\n`).
4. Una vez identificado, cualquier mensaje enviado por el cliente será retransmitido a todos los demás usuarios con el formato `[Nombre]: Mensaje`.
## Estructura del Proyecto
- `chat_server.py`: Contiene la lógica principal del servidor (clase `ChatServer` y `ClientConn`).
## Notas
Este servidor está diseñado con fines educativos para demostrar el uso de Sockets y Hilos en Python.