#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 / брандмауэром, они хорошо документированы и зависят от используемого протокола, т. Е. справляются с этим.