2009-08-12 16 views
9

¿Cuál es el mejor protocolo que puedo usar para transferir un archivo grande, que debe ser rápido y confiable? Debe admitir sistemas de bajo ancho de banda ya que necesito una transmisión de archivos en toda la India. El tamaño del archivo puede ser de 100 a 500 MB.¿Qué protocolo es mejor para la transferencia de archivos?

+5

Debe proporcionar más contexto para esta pregunta. ¿Qué tan grande es el archivo? ¿Está transfiriendo el archivo a través de una LAN, una WAN de gran ancho de banda, una conexión a Internet de ancho de banda bajo? – Amok

+1

¿Cómo es este C#? – Oskar

+0

Y también relevante en contexto: especifique bajo ancho de banda; son 9600bps; paquetes por sms o <1Mbps? ¿Cuál es la fiabilidad de tu conexión? ¿Es probable que la conexión se desconecte? ¿Cuántos pares (o solo conexiones de 1 a 1)? – Adriaan

Respuesta

3

A pesar de que FTP es el protocolo más eficiente para la transferencia de archivos, que es bastante difícil de implementar. Yo usaría HTTP. El soporte está incorporado en la mayoría de las plataformas y es más resistente a los firewalls.

+7

No tiene sentido implementar el protocolo usted mismo, solo use alguna biblioteca existente. –

+0

vsftpd sería la opción más fácil. Se puede instalar a través de apt-get. – admrply

0

HTTP es probablemente el camino a seguir para archivos pequeños y/o usuarios poco sofisticados. Tener que configurar un firewall detendrá a muchos usuarios. Casi todas las redes permiten transferencias http a través del puerto 80 sin configuración especial.

Aunque dijiste archivos grandes. Puede escribir el código de transferencia de manera que use transferencias de rango para intentar de nuevo las descargas interrumpidas.

Alguien probablemente ha escrito una biblioteca de transferencia de archivos que maneja transferencias parciales y vuelve a intentar automáticamente, aunque no conozco ninguna.

0

Esto podría ser de algún interés relacionado con la transferencia de archivos y .NET, no es que la publicación original mencionara .NET de ninguna forma o forma.

Sending Files in Chunks with MTOM Web Services and .NET 2.0 Por Tim Mackey
¿Cómo enviar archivos grandes a través de servicios web en pequeños trozos utilizando masa máxima de despegue (WSE 3)

Justo en cuenta que necesita para instalar Mejoras Servicio Web 3.0 (se quiere encontrar enlaces relevantes en el artículo).

¡De lo contrario, buen día, señor!

-3

Bueno, creo que es mejor usar el protocolo TCP. Es confiable y el UDP no lo es. Mientras que UDP es más rápido ya que un protocolo de mejor esfuerzo no es "seguro". Los programas P2P usan UDP, aunque es más rápido y realmente no le importa tanto el paquete. FTP usa TCP generalmente. Así que sugeriría implementar TCP y programas sobre sockets. Use un puerto como 120000 o algo así porque esos son gratuitos.

10

Rsync es una gran opción para este problema. Está diseñado para enviar/actualizar archivos grandes de forma remota.

  • Se ejecuta desde la línea de comandos para que pueda iniciarlo con bastante facilidad como un proceso externo.
  • Puede sincronizar dos sistemas de archivos remotos.
  • Maneja archivos de gran tamaño.
  • Tiene un algoritmo inteligente que busca copiar solo las diferencias en los archivos de alrededor.
  • Se ha implementado ampliamente y es de código abierto.
  • Tiene una capacidad de regulación por lo que puede limitar la cantidad de una conexión WAN que está utilizando con la transferencia para que pueda sintonizarla para evitar pasar hambre en otros procesos de conectividad.
  • internamente utiliza zlib para comprimir bloques de datos transferidos

sitio original: http://samba.anu.edu.au/rsync/

asegurar rsync con ssh: características http://www.linux.com/archive/feature/113847

detalladas: http://en.wikipedia.org/wiki/Rsync

0

GBProtocol puede transferir archivos más rápido que FTP, puede consultar la demostración en GBProtocol vs FTP

Cuestiones relacionadas