|
| ||||||||||||
| ||||||||||||
Firewall tunnelingПеревод на русский © Сергей Миссан, 2000 Java Q&A Как мне соединиться с моим Java сервером через HTTP когда клиент находится за proxy/firewall? Я пробовал такое с апплетом, но он выдает в числе прочих исключение "host unreachable". Вы не можете соединится, потому что proxy/firewall клиента предотвращает большинство соединений через сокеты. Большинство файрволов перекрывают любой обмен информацией, кроме HTTP. Это делается для того, чтобы защитить внутренюю инфраструктуру; пользователи по-прежнему могут использовать Веб, но не могут соединится с другими сетевыми приложениями. Однако, есть способы для соединения ваших Java приложений и серверов через HTTP. Иногда такой прием называют firewall tunneling. Для того, чтобы облегчить себе жизнь, напишите сервлеты для сервера и оберните все клиентские сообщения в HTTP запросы. На стороне клиента ваш код должен использовать URLConnection для отправки данных на сервер:
//соединится
URL url = new URL("http://www.myserver.com/
servlets/myservlet");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestProperty("Content-Type", "application/octet-stream");
//Открываем output stream и посылаем данные.
OutputStream out = conn.getOutputStream();
//В данном случае ничего не выдается в поток, но вы можете это сделать.
out.flush();
out.close();
//Открываем input stream и загружаем данные.
InputStream in = conn.getInputStream();
//Здесь вы будете загружать свои данные.
in.close()
На стороне сервера, когда клиент выдает openConnection(), вызывается метод сервлета doPost(). В этом методе вы можете читать данные и отсылать их клиенту. Об автореRandom Walk Computing это наибольшая консалтинговая фирма в Нью Йорке, специализирующаяся на Java/CORBA решениях для предприятий. Известные своим выдающимся знанием Java, консультанты Random Walk публикуются и выступают на самых престижных форумах мира. Для связи с Random Walk используйте javaqa@javaworld.com.Reprinted with permission from the March 2000 edition of JavaWorld magazine. Назад | Содержание | Вперед
|
|
CITForum © 1997–2025