Обмен файлами напрямую между пользователями (!)

Идея реализована: www.directransfile.com

Дата публикации: 26.09.2010
Что надо сделать: Написать программу обмена файлами между пользователями в режиме онлайн.
Описание проблемы: Часто возникает потребность передать файл (файлы) другому пользователю (пользователям): друзьям, коллегам, знакомым. Skype позволяет сделать это напрямую, но дико медленно. Единственный толковый вариант- закачать файл на файлообменники типа http://files.mail.ru/, а потом отправить ссылку, по которой получатели скачают файл к себе. Это долго по времени- последовательно сначала закачай, потом скачай. Если оба участника файлообмена находятся онлайн, и им обменяться файлами надо прямо сейчас, напрямую, как говорится "точка-точка", то никакого быстрого варианта я не знаю.
Вариант реализации: Чистый веб-сервис принципиально не приемлем. Образец- программа floomby:
  1. Программа висит в трее.
  2. Пользователь кликает правой кнопкой на значке, открывается диалог выбора файла (папки).
  3. После выбора файла (папки) для передачи пользователю выдается ссылка, которую он должен передать получателю. По указанной ссылке будет находиться информация об IP-адресе компьютера отправителя и открытом для передачи порте. А также резервный способ связи, в случае, если прямая передача не получается (например, в случае нахождения пользователя за proxy-сервером).
  4. Если у получателя уже есть такая программа обмена файлами, то он в нее вводит полученную ссылку, и начинается передача напрямую. Докачка, сжатие, реконект- все должно обрабатываться автоматически, никаких лишних вопросов пользователю.
  5. Если у пользователя программы нет, то он вводит полученную ссылку в браузер. Попадает на страницу, где ему предлагается скачать, установить программу и сразу же начать скачивание (адрес же пользователь в браузер уже ввел- надо этот адрес в программу при скачивании передать, чтобы программа второй раз у пользователя не просила ввести адрес для передачи).
Что надо учесть: Как вариант, программа может быть сделана на Silverlight. Это позволит пользователю, у которого не установлена программа, сразу со страницы браузера начать скачивание. Попутно пользователь может установить эту программу себе на компьютер (технология Silverlight позволяет это сделать).
Надо учитывать возможные препятствия для прямой передачи типа "точка-точка" (прокси, брандмауэры, NAT) и автоматически выбирать различные варианты обхода препятствий. Если прямая передача невозможна, то автоматически перекидывать поток через сервер, к которому программы обоих пользователей (отправитель и получатель) подцепятся как клиенты.
Чтобы синхронизировать работу программ отправителя и получателя использовать сервер. Через сервер программы определяют лучший способ передачи файлов и договариваются о передаче. На сервере идентификация пары отправитель-получатель производится по ссылке.

Теги

#ПодтвержденаРеализация