Un módulo Python para transferencia de archivos eficiente entre cliente y servidor usando sockets TCP.
Sistema de transferencia de archivos basado en sockets TCP que permite enviar archivos grandes (especialmente CSV) desde un servidor a múltiples clientes de forma eficiente mediante lectura/escritura en bloques de 4096 bytes.
- Transferencia eficiente: Envío de archivos en bloques de 4096 bytes
- Protocolo personalizado: Utiliza separador
<SEPARATOR>para metadatos - Confirmación de recepción: El cliente confirma la recepción correcta del archivo
- Conexiones TCP: Comunicación confiable entre cliente y servidor
Servidor Python que escucha conexiones TCP y envía archivos a clientes conectados.
Características:
- Se inicia en IP y puerto configurables
- Envía el nombre y tamaño del archivo antes del contenido
- Transmite el archivo en bloques de 4096 bytes
- Compatible con múltiples conexiones secuenciales
Configuración:
host = '169.254.10.220' # Cambiar según tu IP
port = 4000
filename = "Nayara_101A_2017.csv" # Cambiar según el archivoCliente Python que se conecta a un servidor y recibe archivos.
Características:
- Se conecta a un servidor especificado
- Recibe metadatos del archivo (nombre y tamaño)
- Guarda el archivo localmente
- Envía confirmación de recepción
Configuración:
host = '192.168.0.13' # IP local del cliente
port = 4005
server = ('192.168.0.12', 4000) # IP:puerto del servidorpython server.pyEl servidor se iniciará en la IP y puerto especificados y esperará conexiones de clientes.
python client.pyEl cliente se conectará al servidor, recibirá el archivo y lo guardará localmente.
- Cliente se conecta al servidor
- Servidor envía:
{nombre_archivo}<SEPARATOR>{tamaño_en_bytes} - Cliente parsea los metadatos
- Servidor envía el contenido del archivo en bloques de 4096 bytes
- Cliente recibe y escribe en archivo local
- Cliente envía confirmación: "File received"
- Python 3.6+
- No requiere dependencias externas (usa módulos estándar:
socket,os)
Antes de usar, actualiza estos valores según tu entorno:
En server.py:
host: IP del servidor (línea 16)port: Puerto a escuchar (línea 17)filename: Nombre del archivo CSV a enviar (línea 26)
En client.py:
host: IP local del cliente (línea 13)port: Puerto local del cliente (línea 14)server: Tupla (IP_servidor, puerto_servidor) (línea 16)
- Transferencia de archivos CSV grandes entre máquinas
- Sincronización de datos en redes locales
- Distribución de archivos de reportes
- Integración con sistemas IoT
- El tamaño del buffer (4096 bytes) está optimizado para la mayoría de casos
- El separador
<SEPARATOR>debe ser único y no debe aparecer en nombres de archivos - Para uso en producción, considera agregar encriptación y autenticación
Sin especificar (considera agregar una)
Dan178A