2012-06-06 5 views
0

Возможно ли написать Java-апплет, который может быть сервером на клиентской машине в локальной сети клиента?Может ли апплет Java работать как сервер?

Чтобы быть более конкретным, то, что я ищу, это туннельное не веб-трафик через Интернет. Отправитель отправит апплет, который затем отправит полученные данные обратно на сервер.

Возможно ли это? Каковы ограничения, которые могут мешать?

Примечание: Я знаю, что апплет может подключаться к серверу, что не является проблемой. Проблема заключается в том, может ли апплет прослушивать соединение/данные на локальном, клиентском порту.

ответ

3

Неподписанный апплет может связывать только хост, из которого они происходят.

Подписанный апплет может выполнять любое соединение, которое вы хотите, и может прослушивать порты tcp-ip.

Источник: http://docs.oracle.com/javase/tutorial/deployment/applet/security.html

+0

Я не говорю о вызове, я говорю о прослушивании подключений на локальной клиентской машине. Перенаправление входящих данных обратно на сервер, из которого появился апплет, не является проблемой, так как все это делается через HTTPS. – cdeszaq

+0

Подписанный апплет может делать все, что может сделать приложение java, включая прослушивание портов tcp-ip. –

+0

С помощью неподписанного апплета пользователю просто будет предложено разрешить его, если апплет попытается открыть порт tcp-ip для прослушивания, или будет вызвано исключение? – cdeszaq

0

Как правило, она не может.

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

Существуют способы ограничения такого ограничения, в основном вы можете указать специальную политику безопасности для апплета или запустить его в специальном контейнере без ограничений; но зачем беспокоиться, когда вы можете просто переносить содержимое своего приложения в стандартный сервлет или даже автономный сервер?

+0

Просто подпишите апплет. –

+0

Не может быть автономным или стандартным сервлетом. Он должен быть как можно меньше, так как он должен быть загружен на странице браузера.Кроме этого, хотя, если это подписанный апплет, он может открыть порт на локальном клиенте и слушать связанные соединения? – cdeszaq

+0

Почему так важно туннелировать вашу информацию через чужой компьютер? Вы можете проложить туннель через свой компьютер! Разверните сервлет на своем компьютере или запустите автономный компьютер. Попросите его прослушать не-веб-порт и передать запросы на веб-порт. Веб-браузеры делают паршивые серверы. –

1

Сервер не подключается нигде. Сервер открывает сокет сервера и прослушивает.

В прошлом, насколько я помню, серверный сокет был ограничен в MSIE и был разрешен в Netscape (вы помните такое браузер?) :)

Я лично не писал апплеты в течение последних 10 лет, поэтому я понятия не имею, что происходит сейчас с существующими браузерами, но это очень легко проверить. Просто напишите кратчайший апплет, который вы можете, и поместите код new ServerSocket(1234).accept(); в его метод init() или start(). Если не было выбрано исключение, вы можете написать апплет, который функционирует как сервер. В противном случае вы не сможете.

Просто попробуйте со всеми доступными браузерами. 20 минут работы, и все готово. Удачи. Я буду рад узнать о результатах.

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