Skip to content

Repository files navigation

Socket Communication System

Platform Python PyQt5 Status

Utilidad de escritorio para Windows que verifica la conectividad WebSocket entre dos computadoras en la misma red local (LAN). Una máquina actúa como Server y la otra como Client; la aplicación intercambia un mensaje de prueba a través de Socket.IO y muestra el resultado con un indicador visual de estado.

Capturas de pantalla

Rol Server Rol Client
Modo servidor Modo cliente
Prueba exitosa Prueba fallida
Conexión exitosa Conexión fallida

Características

  • Servidor WebSocket: basado en python-socketio + eventlet, corre en un hilo aparte para no bloquear la interfaz.
  • Cliente WebSocket: se conecta a la otra máquina con reconexión automática.
  • Selector de rol: alterna entre "Server · Main Computer" y "Client · Secondary Computer" con un par de radio buttons.
  • Prueba de conectividad con un clic: el botón "Run Test" ejecuta la prueba y refleja el resultado (éxito/error) con icono y tooltip descriptivo.
  • Detección de IP local: intenta autocompletar la IP de este equipo y detectar equipos vecinos en la subred 192.168.0.0/24.

Cómo funciona

Es importante entender qué prueba exactamente esta herramienta, para no sobreinterpretar el resultado.

  • Modo Server: levanta un servidor Socket.IO en este equipo y, de inmediato, se conecta a sí mismo como cliente para confirmar que la pila de sockets local funciona. Es una autoprueba local, no una confirmación de que el otro equipo puede alcanzarlo.
  • Modo Client: se conecta directamente a la IP configurada como "Remote Device" y envía un mensaje de prueba. Esta sí ejercita la ruta de red real hacia la otra máquina.

Un ícono verde significa que la ruta probada respondió correctamente; uno rojo, que falló (pasa el cursor sobre el ícono para ver el detalle del error).

Requisitos

  • Windows 10/11 (usa netsh y la API de Windows vía ctypes para detectar interfaces de red)
  • Python 3.10 o superior
  • Dependencias listadas en requirements.txt: PyQt5, python-socketio, websocket-client, eventlet, scapy, manuf

Instalación

git clone https://github.com/Dan178A/Socket-Communication-System.git
cd Socket-Communication-System
pip install -r requirements.txt

Uso

En cada una de las dos computadoras:

python main.py
  1. Selecciona el rol de este equipo (Server en la computadora principal, Client en la secundaria).
  2. Verifica/edita las direcciones IP autodetectadas de "This Device" y "Remote Device".
  3. Pulsa Run Test. El icono de estado correspondiente cambiará a verde (éxito) o rojo (error).

Estructura del proyecto

Socket-Communication-System/
├── main.py                    # Punto de entrada; conecta la UI con la lógica de conexión
├── Server_Env.py               # Servidor Socket.IO (rol "Server")
├── Client_Env.py                # Cliente Socket.IO (rol "Client")
├── Manager_server_client.py    # Fábrica que instancia Client o Server según el rol
├── ip_utils.py                  # Detección de IP local / utilidades de red (Windows)
├── socket_ui.py                 # UI generada por pyuic5 a partir de socket.ui — no editar a mano
├── socket.ui                    # Diseño editable en Qt Designer (fuente de verdad de la UI)
├── setup.py                     # Empaquetado a .exe con cx_Freeze
├── requirements.txt              # Dependencias de Python
├── assets/                       # Iconos de estado (SVG)
└── docs/screenshots/              # Capturas usadas en este README

Regenerar socket_ui.py tras editar socket.ui

socket_ui.py se genera automáticamente; cualquier cambio manual en ese archivo se perderá si se vuelve a generar. Para aplicar cambios de diseño, edita socket.ui (con Qt Designer o a mano) y regenera con:

pyuic5 socket.ui -o socket_ui.py

Compilar el ejecutable (opcional)

pip install cx_Freeze
python setup.py build

El .exe resultante queda en build/Test_conection/.

Limitaciones conocidas

  • Solo funciona en Windows (dependencia de netsh/ctypes.windll en ip_utils.py).
  • El escaneo de IPs vecinas solo cubre 192.168.0.0/24; en otras subredes, completa las direcciones a mano.
  • La prueba de "Server" es una autoprueba local (ver sección Cómo funciona), no una confirmación bidireccional con el otro equipo.
  • Varias utilidades de ip_utils.py (configuración de IP estática, DHCP, detección de MAC/fabricante) no están conectadas todavía a la interfaz gráfica.

Licencia

Este repositorio no especifica una licencia todavía. Si vas a publicarlo o compartirlo, considera añadir una (por ejemplo MIT) para dejar claro cómo puede usarse.

About

Implementacion de Servidor y Cliente webSocket

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages