P2P (браузер в браузер) с Java - PullRequest
6 голосов
/ 06 марта 2011

Я хотел бы реализовать приложение Java, которое запускается на веб-странице и позволяет:

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

Какие опции (библиотеки Java, технологии, ...) у меня есть?

СПАСИБО!

1 Ответ

7 голосов
/ 06 марта 2011

Если вы хотите использовать Java в браузере, единственный способ - это апплеты.

Но обычный (ненадежный) апплет:

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

Это по соображениям безопасности: апплет не должен быть в состоянии причинить вред пользователю, на компьютере которого он работает.

Итак, если вы хотите сделать то, что сказали, вам нужно, чтобы пользователь доверял вам и давал вам больше разрешений. Для доступа к файлу можно использовать JNLP API (т.е. запустить апплет с файлом jnlp, а затем использовать API в javax.jnlp , особенно FileOpenService и FileSaveService. Затем пользователю необходимо подтвердите доступ перед выбором файла с помощью средства выбора файлов.

Это по-прежнему не помогает для доступа к сети - ваши апплеты должны иметь подходящие SocketPermissions там, если вы не хотите проксировать все на своем сервере (который не будет одноранговым). Для этого вам нужно подписать свой апплет и запросить все разрешения у пользователя (я думаю, что нет более детального способа предоставить только необходимые SocketPermissions). Вы можете сделать это в jnlp-файле.

...