Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ”Œ Chat TCP Cliente-Servidor β€” PFO 1 Β· Redes

Python TCP/Socket SQLite Multihilo IFTS 29


PrΓ‘ctica Formativa Obligatoria 1 (PFO 1) β€” Redes y Sistemas Distribuidos
Instituto de FormaciΓ³n TΓ©cnica Superior NΒ° 29 (IFTS 29)
Autor: BARANDA CABRERA, Gustavo Daniel


πŸ“– DescripciΓ³n del Proyecto

Sistema de chat TCP cliente-servidor multihilo desarrollado en Python. El servidor acepta mΓΊltiples conexiones simultΓ‘neas mediante hilos (threading), almacena cada mensaje recibido en una base de datos SQLite (chat.db) junto con la IP del cliente y el timestamp, y responde al cliente confirmando la recepciΓ³n.

El cliente permite enviar mensajes al servidor de forma interactiva desde la consola, con reintentos automΓ‘ticos de conexiΓ³n.


πŸ—οΈ Arquitectura

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚           Cliente (clientes.py)        β”‚
β”‚  - Conecta vΓ­a TCP a localhost:5000    β”‚
β”‚  - EnvΓ­a mensajes por consola          β”‚
β”‚  - Escribe 'exito' para desconectar    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚ TCP Socket
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚          Servidor (server.py)          β”‚
β”‚  - Escucha en localhost:5000           β”‚
β”‚  - Thread por cada cliente conectado   β”‚
β”‚                                        β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚ network.py  β”‚  β”‚    db.py        β”‚  β”‚
β”‚  β”‚ (Sockets +  β”‚  β”‚ (SQLite3 +      β”‚  β”‚
β”‚  β”‚ Threading)  β”‚  β”‚  Persistencia)  β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚
               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
               β”‚       chat.db          β”‚
               β”‚  Tabla: mensajes       β”‚
               β”‚  (id, contenido,       β”‚
               β”‚   fecha_envio,         β”‚
               β”‚   ip_cliente)          β”‚
               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ—‚οΈ Estructura del Proyecto

Redes---Socket/
β”‚
β”œβ”€β”€ server.py           # Punto de entrada del servidor (args + init)
β”œβ”€β”€ clientes.py         # Script del cliente TCP interactivo
β”œβ”€β”€ chat.db             # Base de datos SQLite (generada automΓ‘ticamente)
β”œβ”€β”€ readme.md           # Instrucciones bΓ‘sicas de ejecuciΓ³n
β”‚
└── servidor/           # MΓ³dulo del servidor
    β”œβ”€β”€ __init__.py     # InicializaciΓ³n del paquete
    β”œβ”€β”€ db.py           # ConexiΓ³n, creaciΓ³n de tabla y guardado de mensajes
    └── network.py      # Socket TCP, aceptaciΓ³n de conexiones y manejo de clientes

πŸ› οΈ TecnologΓ­as Utilizadas

MΓ³dulo DescripciΓ³n
socket ComunicaciΓ³n TCP cliente-servidor
threading Hilos daemon por cliente (multihilo)
sqlite3 Persistencia de mensajes en chat.db
argparse Argumentos de lΓ­nea de comandos (--host, --puerto)
datetime Timestamp de recepciΓ³n de mensajes

βš™οΈ MΓ³dulos del Servidor

Archivo FunciΓ³n
server.py Entry point: inicializa DB, socket y acepta conexiones
servidor/db.py inicializar_db() β†’ crea tabla mensajes; guardar_mensaje() β†’ inserta en SQLite
servidor/network.py inicializar_socket() β†’ bind/listen; aceptar_conexiones() β†’ loop + threads; manejar_cliente() β†’ recv/send
clientes.py conectar_al_servidor() β†’ 3 reintentos; enviar_mensajes() β†’ loop hasta 'exito'

πŸ—„οΈ Esquema de Base de Datos

CREATE TABLE IF NOT EXISTS mensajes (
    id          INTEGER PRIMARY KEY AUTOINCREMENT,
    contenido   TEXT    NOT NULL,
    fecha_envio TEXT    NOT NULL,
    ip_cliente  TEXT    NOT NULL
);

πŸš€ InstalaciΓ³n y Uso

Requisitos

  • Python 3.7 o superior
  • Sin dependencias externas (solo librerΓ­a estΓ‘ndar de Python)

1. Clonar el repositorio

git clone https://github.com/GustavoBaranda/Redes---Socket.git
cd Redes---Socket

2. Iniciar el Servidor

# Puerto por defecto: 5000
python server.py

# Puerto personalizado
python server.py --host localhost --puerto 5001

3. Conectar un Cliente

# En otra terminal
python clientes.py

# Con parΓ‘metros personalizados
python clientes.py --host localhost --puerto 5001

EscribΓ­ mensajes en la consola del cliente y presionΓ‘ Enter para enviarlos.
EscribΓ­ exito para cerrar la conexiΓ³n.


πŸŽ“ Contexto AcadΓ©mico

InstituciΓ³n IFTS NΒ° 29 (Instituto de FormaciΓ³n TΓ©cnica Superior NΒ° 29)
Carrera Tecnicatura Superior en Desarrollo de Software
Materia Redes y Sistemas Distribuidos
Trabajo PFO 1 β€” PrΓ‘ctica Formativa Obligatoria 1
Autor Gustavo Baranda

πŸ‘€ Autor

Gustavo Baranda

GitHub


PFO 1 Β· Redes y Sistemas Distribuidos Β· IFTS NΒ° 29

About

πŸ”Œ Chat TCP Cliente-Servidor Multihilo con SQLite Β· PFO 1 β€” Redes y Sistemas Distribuidos Β· IFTS NΒ° 29 Β· Python

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages