Skip to content

egrazm/chat_sockets

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chat Socket

Un sistema básico de comunicación en tiempo real entre cliente y servidor, implementado en Python utilizando el módulo estándar socket. Este proyecto forma parte de un reto técnico para comprender los fundamentos de las redes, las conexiones TCP y la transmisión de datos bidireccional.


¿Cómo sobrevivió la aplicación?

La aplicación logró mantenerse funcional tras superar diversos desafíos técnicos durante el desarrollo. Se implementó un servidor capaz de aceptar múltiples conexiones secuenciales y recibir mensajes desde el cliente. El cliente, por su parte, establece la conexión TCP al host y puerto indicados, y envía datos codificados en UTF-8 al servidor, que luego los decodifica y procesa.

Se trabajó con socket.AF_INET y socket.SOCK_STREAM para crear una comunicación confiable, y se aplicaron buenas prácticas como el uso de try/except para controlar errores de red y asegurar el cierre adecuado de los sockets, evitando bloqueos o fugas de recursos.


¿Qué se aprendió cuando todo se rompió?

Cuando la aplicación falló, surgieron las verdaderas lecciones. Algunos aprendizajes clave:

  • Manejo de errores comunes: como ConnectionResetError, BrokenPipeError y OSError, que ocurren al cerrar conexiones abruptamente o cuando el cliente/servidor deja de responder.
  • Importancia del cierre ordenado: el uso de socket.close() y la gestión de excepciones evitan errores difíciles de rastrear y aseguran la liberación de recursos.
  • Depuración con mensajes y estados: agregar mensajes intermedios para entender en qué punto del flujo se produce un fallo fue crucial para aislar errores.
  • Bloqueo del flujo: entender cómo recv() y send() bloquean el programa hasta recibir/enviar datos permitió diseñar un flujo más estable.
  • Estructura modular: separar la lógica del cliente y del servidor permitió identificar responsabilidades y reutilizar funciones de manera clara.

Conclusión

Este reto no solo puso a prueba el conocimiento técnico, sino también la capacidad de leer documentación, interpretar errores y aplicar soluciones iterativas. El resultado es una base funcional y extendible para sistemas de comunicación simples, ideal como punto de partida para proyectos más avanzados como chats con múltiples usuarios, interfaces gráficas o integración con bases de datos.


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages