Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Работа с сетью > Апплет и http тунель


Автор: Seen 13.2.2006, 17:14
Есть апплет, который использует определенный модуль.
Этот модуль нуждается в сервисе, доступ к которому возможен только по tcp на указанный порт.

Так как клиент может сидеть за фаерволом (прокси), как можно организовать работу этого модуля через http?
Я так понимаю необходимо организовать http тунель через который и будет работать этот модуль и указать ему необходимый ip и порт?

Автор: COVD 13.2.2006, 19:37
Правильно понимаете. Вам прокси сервер нужен. Например, это сервлет, который читает запрос апплета, пересылает его по tcp на нужный сервис, читает ответ сервиса и пересылает его по http обратно апплету.

Автор: Seen 14.2.2006, 10:51
Цитата

Правильно понимаете. Вам прокси сервер нужен. Например, это сервлет, который читает запрос апплета, пересылает его по tcp на нужный сервис, читает ответ сервиса и пересылает его по http обратно апплету.


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

Можно небольшой примерчик как такое организовать?


Автор: COVD 14.2.2006, 16:24
Примерчиков для отдельных операций много.
Вам нужно:
1. из апплета послать http запрос сервлету и прочитать ответ.
2. в сервлете читать http запрос апплета и отправлять ответ апплету.
3. в сервлете открыть сокетное соединение с сервисом, послать туда запрос и прочитать ответ.

А вот как все это связать уже зависит от задачи. Применение http определяет протокол коммуникации в виде "запрос - ответ". Если вас это устраивает, и протокол может быть stateless , т.е. не надо хранить информацию в промежутке между запросами, то все относительно просто.

Автор: Seen 14.2.2006, 17:03
Цитата

Примерчиков для отдельных операций много.
Вам нужно:
1. из апплета послать http запрос сервлету и прочитать ответ.
2. в сервлете читать http запрос апплета и отправлять ответ апплету.
3. в сервлете открыть сокетное соединение с сервисом, послать туда запрос и прочитать ответ.


Есть еще один этап:
Апплетом слушать tcp порт и запрос перенаправлять по http сервлету.
после получения http ответа отдавать по tcp запрашиваемому модулю.

Все это понятно. А вот сама реализация мне интересна.

Во всяком случае спасибо. Буду искать примеры.

Автор: COVD 14.2.2006, 19:50
Цитата(Seen @ 14.2.2006, 17:03 Найти цитируемый пост)
Апплетом слушать tcp порт и запрос перенаправлять по http сервлету.
после получения http ответа отдавать по tcp запрашиваемому модулю.


т.е. сам апплет выступает как прокси сервер? Вы хотите чтобы внутренний модуль апплета общался с апплетом через локальный адрес 127.0.0.1 ? Самое мутное место в этой задаче.

Автор: Seen 15.2.2006, 11:18
Цитата

т.е. сам апплет выступает как прокси сервер? Вы хотите чтобы внутренний модуль апплета общался с апплетом через локальный адрес 127.0.0.1 ? Самое мутное место в этой задаче.


Как бы понятнее объяснить...
Есть апплет, которому для работы необходим определенный модуль.
Этот модуль может получать информацию только по tcp.
ip и порт куда должен обращаться модуль я ему указываю.

Так вот если клиент за фаерволом я как раз и думал сделать прокси (второй апплет) к которому
по tcp:\127.0.0.1:port обращается модуль из основного апплета.
И вот этот второй апплет инкапсулирует запрос в http отдает сервлету и далее как описано выше.

Автор: COVD 15.2.2006, 16:31
понятно. вот с организации общения апплета с внутренним модулем и стоило бы начать, потому что это самый нестандартный пункт

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)