2009-08-12 4 views
9

Какой лучший протокол я могу использовать для передачи большого файла, который должен быть быстрым и надежным? Он должен поддерживать системы с низкой пропускной способностью, так как мне нужна передача файлов по всей Индии. Размер файла может составлять от 100 до 500 МБ.Какой протокол лучше всего подходит для передачи файлов

+5

Вы должны предоставить больше контекста для этого вопроса. Насколько велик файл? Передаете ли вы файл по локальной сети, WAN с высокой пропускной способностью, интернет-соединение с низкой пропускной способностью? – Amok

+1

Как это C#? – Oskar

+0

А также актуально в контексте: укажите минимальную пропускную способность; 9600 бит/с; пакеты на смс или <1 Мбит/с? Какова надежность вашего соединения? Может ли соединение выпадать? Сколько пэров (или только соединений 1 к 1)? – Adriaan

ответ

3

Даже если FTP является наиболее эффективный протокол для передачи файлов, это довольно трудно реализовать. Я бы использовал HTTP. Поддержка встроена на большинстве платформ и более устойчива к межсетевым экранам.

+7

Не имеет смысла реализовывать протокол самостоятельно, просто используйте некоторую существующую библиотеку. –

+0

vsftpd был бы самым простым вариантом. Может устанавливаться через apt-get. – admrply

0

HTTP - это, вероятно, путь для небольших файлов и/или неискушенных пользователей. Необходимость настройки брандмауэра остановит многих пользователей на холоде. Почти каждая сеть позволяет передавать HTTP через порт 80 без специальной настройки.

Вы действительно сказали, что большие файлы. Вы можете написать код передачи таким образом, чтобы он использовал переносы диапазона для повторной загрузки прерванных загрузок.

Возможно, кто-то, возможно, написал библиотеку передачи файлов, которая обрабатывает частичные передачи и автоматически выполняет попытки, хотя я не знаю об одном.

0

Это может быть интересным, связанным с передачей файлов и .NET, а не тем, что исходное сообщение, указанное .NET, каким-либо образом формирует или форму.

Sending Files in Chunks with MTOM Web Services and .NET 2.0 Тим Маккей
Как отправлять большие файлы через веб-сервисы небольшими порциями, используя MTOM (WSE 3)

Сразу отметим, что вам нужно установить Улучшения Web Service 3.0 (вы будете найти соответствующие ссылки в этой статье).

Иметь хороший день сэр!

-3

Ну, я думаю, что лучше всего использовать протокол TCP. Он надежный, а UDP - нет. Хотя UDP работает быстрее, поскольку протокол с наилучшим усилием не является «безопасным». Программы P2P используют UDP, хотя, поскольку это быстрее и действительно не волнует, что многое потеряет пакет. FTP обычно использует TCP. Поэтому я предлагаю реализовать TCP и программные сокеты. Используйте порт 120000 или что-то, потому что это бесплатно.

10

Rsync отлично подходит для решения этой проблемы. Он предназначен для отправки/обновления больших файлов удаленно.

  • Выполняется из командной строки, поэтому вы можете легко запускать его как внешний процесс.
  • Он может синхронизировать две удаленные файловые системы.
  • Он обрабатывает большие размеры файлов.
  • У этого есть умный алгоритм, который ищет только копировать разницу в файлах вокруг.
  • Широко применяется и является с открытым исходным кодом.
  • У этого есть дросселирование, поэтому вы можете ограничить, сколько из WAN-соединения вы используете с передачей, чтобы вы могли настроить его, чтобы избежать голодания других процессов подключения.
  • внутренне использует Zlib для сжатия передаваемых блоков данных

оригинальный сайт: http://samba.anu.edu.au/rsync/

обеспечение Rsync с SSH: http://www.linux.com/archive/feature/113847

подробные характеристики: http://en.wikipedia.org/wiki/Rsync

0

GBProtocol может передавать файлы быстрее чем FTP, вы можете проверить демо на GBProtocol vs FTP

Смежные вопросы