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.
| Rol Server | Rol Client |
|---|---|
![]() |
![]() |
| Prueba exitosa | Prueba fallida |
|---|---|
![]() |
![]() |
- 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.
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).
- Windows 10/11 (usa
netshy la API de Windows víactypespara detectar interfaces de red) - Python 3.10 o superior
- Dependencias listadas en
requirements.txt: PyQt5, python-socketio, websocket-client, eventlet, scapy, manuf
git clone https://github.com/Dan178A/Socket-Communication-System.git
cd Socket-Communication-System
pip install -r requirements.txtEn cada una de las dos computadoras:
python main.py- Selecciona el rol de este equipo (Server en la computadora principal, Client en la secundaria).
- Verifica/edita las direcciones IP autodetectadas de "This Device" y "Remote Device".
- Pulsa Run Test. El icono de estado correspondiente cambiará a verde (éxito) o rojo (error).
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
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.pypip install cx_Freeze
python setup.py buildEl .exe resultante queda en build/Test_conection/.
- Solo funciona en Windows (dependencia de
netsh/ctypes.windllenip_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.
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.



