Как я могу закодировать p2p-сеть веб-приложения?

#java #php #p2p #websocket

#java #php #p2p #websocket

Вопрос:

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

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

Все это должно быть сделано на веб-сайте.

Будет ли работать веб-сокет?

Пожалуйста, и спасибо.

Комментарии:

1. Вы пытаетесь создать торрент-трекер?

Ответ №1:

Это действительно невозможно по целому ряду причин:

  • Брандмауэры / NATs
  • Динамические IP-адреса
  • На компьютерах пользователей не работает «сервер»
  • Разрешения на компьютере пользователя
  • Что произойдет, если пользователь просто удалит файл на своем компьютере?

Чтобы это действительно заработало, вам придется:

  • Убедите пользователя установить приложение на свой компьютер (вам понадобится Windows / Linux /… EXE)
  • Попросите пользователя открыть порт в брандмауэре (или использовать какую-либо библиотеку для включения NAT passthru)
  • Попросите компьютер пользователя выполнить пинг вашего сервера в случае изменения IP-адреса пользователя

На стороне сервера вам пришлось бы хранить несколько таблиц базы данных, вот несколько, о которых я могу подумать с самого начала:

  • Таблица пользователя (идентификатор пользователя [PK], текущий IP, порт связи, (возможно, некоторые другие отслеживающие вещи))
  • Таблица доступных загрузок (идентификатор загрузки [PK], идентификатор пользователя [FK])

Затем, когда кто-то захочет выйти и загрузить, вам придется (вероятно) запустить свое приложение с необходимыми аргументами (IP удаленного пользователя / порт / идентификатор файла) и заставить это выполнить работу по загрузке.

Это ни в коем случае не простая задача.

Ответ №2:

Если под WebSockets вы подразумеваете разновидность HTML5, я бы держался подальше от этого. http://en.wikipedia.org/wiki/WebSockets#Browser_support

Компьютер, который должен оставаться включенным, по сути, является вашим сервером. Даже если это не какой-нибудь большой сервер.

Моим предложением было бы установить apache или какой-либо другой небольшой веб-сервер на каждом компьютере пользователя и иметь адрес dyndns для каждого компьютера, чтобы вы могли находить друг друга. это было бы намного проще, чем что-либо кодировать. особенно, если это должно быть сделано через веб-страницу.

Ответ №3:

Вы могли бы использовать клиентскую библиотеку c # для интерфейса с bittorrent или etc и использовать этот режим для загрузки / извлечения. Что касается проблем с NAT / брандмауэром, они хорошо документированы и зависят от используемого протокола, т. Е. справляются с этим.