Skip to content

Dan178A/Socket-File-Sharing-Protocol

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

TCP Socket File Transfer

Un módulo Python para transferencia de archivos eficiente entre cliente y servidor usando sockets TCP.

📋 Descripción

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.

🎯 Características

  • 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

📁 Estructura

server.py

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 archivo

client.py

Cliente 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 servidor

🚀 Uso

Iniciar el servidor

python server.py

El servidor se iniciará en la IP y puerto especificados y esperará conexiones de clientes.

Conectar un cliente

python client.py

El cliente se conectará al servidor, recibirá el archivo y lo guardará localmente.

📊 Protocolo de Transferencia

  1. Cliente se conecta al servidor
  2. Servidor envía: {nombre_archivo}<SEPARATOR>{tamaño_en_bytes}
  3. Cliente parsea los metadatos
  4. Servidor envía el contenido del archivo en bloques de 4096 bytes
  5. Cliente recibe y escribe en archivo local
  6. Cliente envía confirmación: "File received"

⚙️ Requisitos

  • Python 3.6+
  • No requiere dependencias externas (usa módulos estándar: socket, os)

🔧 Configuración Importante

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)

💡 Casos de Uso

  • 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

📝 Notas

  • 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

📄 Licencia

Sin especificar (considera agregar una)

👤 Autor

Dan178A

About

Un módulo Python para transferencia de archivos eficiente entre cliente y servidor usando sockets TCP

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages