Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
1 / 1 / 1
Регистрация: 16.08.2014
Сообщений: 28

Клиент-серверное взаимодействие

16.08.2014, 21:31. Показов 2851. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно осуществить постоянный обмен данными между клиентами и сервером, обмен данными должен осуществляться по протоколу http. Кто нибудь может подсказать каким образом это можно сделать?
Я думал попытаться реализовать при помощи servlet,с get и post, но вот примеров с постоянным обменом данными найти не смог в гугле.

не судите строго на джаве пишу 2ую неделю
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.08.2014, 21:31
Ответы с готовыми решениями:

Клиент-серверное приложение
нужно сделать клиент-серверное приложение. Клиент-это web-страница написанная на HTML с использованием PHP, а сервер написан на JAVA....

Клиент-серверное приложение (работа только на одной машине)
Здравствуйте. Возник такой вопрос по написанию простого приложения (Android). Приложение реализует конект. к серверу и при нажатии на...

Клиент-серверное приложение
Добрый день. Подскажите о чем речь идет, где выполнять и как. В настоящее время есть работающий клиент и сервер на Java. Протокол обмена...

22
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
16.08.2014, 23:03
Цитата Сообщение от maximum62 Посмотреть сообщение
Нужно осуществить постоянный обмен
Что значит постоянный?
1
1 / 1 / 1
Регистрация: 16.08.2014
Сообщений: 28
16.08.2014, 23:33  [ТС]
Постоянный значит что данные на клиенте должны обновлятся не реже одного раза в секунду.
По сути как я понимаю, нужно просто загонять в цикл запрос, и каждую итерацию обрабатывать
0
Вежливость-главное оружие
 Аватар для some_name
233 / 234 / 86
Регистрация: 19.02.2013
Сообщений: 1,446
16.08.2014, 23:44
Как мне кажется, на клиенте должен работать поток, которые с нужной частотой отправляет запросы серверу на получение каких-либо данных. Я так мыслю.
1
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
17.08.2014, 00:34
Цитата Сообщение от maximum62 Посмотреть сообщение
Постоянный значит что данные на клиенте должны обновлятся не реже одного раза в секунду.
Тогда обращайтесь каждую секунду из нового потока. Другое дело что уже при 100 клиентах, ваш сервер будет довольно сильно нагружен и домашний комп уже может не потянуть. Вопрос действительно ли так надо каждую секунду обновлять. Если дата обнавляется реже, то можно просто говорить клиентам что есть обновление данных чтобы сократить кол-во обращений.
1
1 / 1 / 1
Регистрация: 16.08.2014
Сообщений: 28
17.08.2014, 02:04  [ТС]
А можно тут поподробнее, то есть как пример я могу вместе с запросом передавать какой то флаг и по этому флагу решать в сервлете либо передавать данные либо не передавать?

еще другой вопрос, если мне нужно с сервера на клиент при запросе передать xml, каким образом я могу это сделать? на ум приходит только способ с преобразовыванием файла в строку, передачей по response и парсингом на стороне клиента
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
17.08.2014, 09:40
Цитата Сообщение от maximum62 Посмотреть сообщение
А можно тут поподробнее, то есть как пример я могу вместе с запросом передавать какой то флаг и по этому флагу решать в сервлете либо передавать данные либо не передавать?
Я имел в виду что сервер будет сам оповещать клиентов о том что есть новые данные. Если вам ненужна большая нагрузка, такое решение только усложнит вашу программу.

Цитата Сообщение от maximum62 Посмотреть сообщение
еще другой вопрос, если мне нужно с сервера на клиент при запросе передать xml, каким образом я могу это сделать? на ум приходит только способ с преобразовыванием файла в строку, передачей по response и парсингом на стороне клиента
Что-то типа того. Я бы использовал json и фреймворк для автоматического преобразования (например Jersey 2)
1
1 / 1 / 1
Регистрация: 16.08.2014
Сообщений: 28
17.08.2014, 21:51  [ТС]
Большое спасибо за советы)

Добавлено через 3 часа 14 минут
Кто нибудь может подсказать как можно при помощи dopost в сервлете отправить файл xml на сервер, дождаться его обработки и по этому же запросу вернуть другой xml файл?

буду очень признателен если кто нибудь скинет примерчик какой нибудь
0
91 / 91 / 10
Регистрация: 18.05.2013
Сообщений: 265
18.08.2014, 11:59
Добрый день.
Решение задачи оповещения сервером клиентов поверх http решается несколькими путями.
1) Long pulling
2) WebSockets

Примеры в сети имеются .... подключать хоть 100000 клиентов, нагрузка будет зависеть от интенсивности оповещений
1
1 / 1 / 1
Регистрация: 16.08.2014
Сообщений: 28
18.08.2014, 15:50  [ТС]
я вроде где то читал что websockets работает поверх TCP, я ошибаюсь?

Можете подсказать в чем может быть проблема в следующей ситуации
отсылаю с клиента запрос вместе с данными ,все работает нормально, но как только я добавляю в сервлете какое действие с hashset то все перестает работать (сразу извиняюсь за качество кода, опыта пока что мало)

код сервлета

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
HashSet<String> sample;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        InputStream is = request.getInputStream();
        BufferedReader rd = new BufferedReader(new InputStreamReader(is));
        String line;
        StringBuffer strb = new StringBuffer();
                  while((line = rd.readLine()) != null) {
                  strb.append(line);
                  strb.append('\r');}
                sample.add(strb.toString());
        PrintWriter out = response.getWriter();
        out.print(strb.toString());
        out.close();
        
    }
то что выдает
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
авг 18, 2014 6:43:56 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [sample.server] in context with path [/serversample] threw exception
java.lang.NullPointerException
    at sample.server.doPost(server.java:72)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:722)
0
91 / 91 / 10
Регистрация: 18.05.2013
Сообщений: 265
18.08.2014, 15:56
1) Поверх http
2) Я не вижу, чтобы Вы где-то инициализировали sample как объект.
Типа:
Java
1
   sample = new HashSet<String>();
1
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
18.08.2014, 16:12
Цитата Сообщение от edwin3d Посмотреть сообщение
1) Поверх http
не поверх, а как "альтернатива" http
websockets поверх TCP работают
1
91 / 91 / 10
Регистрация: 18.05.2013
Сообщений: 265
18.08.2014, 16:19
Спасибо за поправку, я выразился ошибочно.
Речь именно о работе прикладного уровня помимо http ....
1
1 / 1 / 1
Регистрация: 16.08.2014
Сообщений: 28
19.08.2014, 18:52  [ТС]
Столкнулся с следующей проблемой : я в сервлете хочу обработать xml файл который приходит ко мне строкой, я в теле post создаю и инициализирую объект типа document, все компилируется, потом когда начинаю слать запросы выпадает java.io.IOException, если я компилирую без этой строчки все работает нормально. Кто нибудь может подсказать, что я делаю не так? или подсказать возможные пути решения в данной задаче?

код метода сервлета
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,  IOException {
        try {
        InputStream inputStream = request.getInputStream();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        String line;
        StringBuffer stringBuffer = new StringBuffer();
        while((line = bufferedReader.readLine()) != null) {
            stringBuffer.append(line);
            stringBuffer.append('\r');}
            Document doc = new Document();  // вот эта строка
            PrintWriter out = response.getWriter();
            out.print("Catch");
            out.close();
        }
        catch (Exception e) {
        }
        
    }
0
Вежливость-главное оружие
 Аватар для some_name
233 / 234 / 86
Регистрация: 19.02.2013
Сообщений: 1,446
19.08.2014, 19:02
Мне лично очень не нравиться то, что следующие строки выполняются в цикле, зачем?
Java
1
2
3
4
            Document doc = new Document();  // вот эта строка
            PrintWriter out = response.getWriter();
            out.print("Catch");
            out.close();
1
1 / 1 / 1
Регистрация: 16.08.2014
Сообщений: 28
19.08.2014, 19:45  [ТС]
в цикле выполняются только строки
Java
1
2
3
            
stringBuffer.append(line);
stringBuffer.append('\r');}
Скобка немного сползла, немножко сливается
0
27 / 27 / 13
Регистрация: 07.11.2010
Сообщений: 154
20.08.2014, 12:01
Посмотри здесь как парсить xml документ. И да, код лучше выровнять, как положено! Если у тебя при его чтении проблем не возникает, то остальным не так легко. Да и сам, открыв свой код через год-другой точно не с первого раза разберешься. Есть некие стандарты и лучше их придерживаться с самых первых строк кода.

Добавлено через 40 минут
В приведенной выше ссылке пример создания xml, вот пример парсера.
1
1 / 1 / 1
Регистрация: 16.08.2014
Сообщений: 28
20.08.2014, 13:03  [ТС]
как распарсить то я понимаю, у меня не получается распарсить xml внутри сервлета
0
27 / 27 / 13
Регистрация: 07.11.2010
Сообщений: 154
20.08.2014, 13:41
Раз вы понимаете как парсить, тогда я не понимаю что вы пытаетесь сделать тут:
Java
1
Document doc = new Document();
Цитата Сообщение от maximum62 Посмотреть сообщение
у меня не получается распарсить xml внутри сервлета
У вас есть рабочий код, который парсит xml вне сервлета?
0
1 / 1 / 1
Регистрация: 16.08.2014
Сообщений: 28
20.08.2014, 18:53  [ТС]
в том то и дел что он есть, но когда он в сервлете, выпадает ioexception, даже когда я просто объявляю

Java
1
Document doc = new Document();
у меня тоже вылетает ioexception когда я начинаю делать запросы на сервлет, вот и не могу понять почему такое может происходить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.08.2014, 18:53
Помогаю со студенческими работами здесь

Клиент-серверное взамодействие
Доброго времени суток. Подскажите пожалуйста с чего начать или материалом для чтения? Есть программка , у клиента и сервера меню...

Многопточное клиент-серверное приложение
Добрый день. Собственно задача такая: Написать консольное клиент-серверное приложение, реализующее функцию словаря. Словарь должен...

Простое клиент-серверное игровое приложение
Доброго времени суток форумчани. Хотел бы спросить совета , а точней напутствий. Хочу написать небольшую многопользовательскую игру,...

Клиент-Серверное взаимодействие
Добрый день. Взываю о помощи ) Есть сервер в виде консоли. На котором реализован ряд методов для работы с БД. Так же имеется клиент...

Клиент-серверное взаимодействие
Планирую написать клиент-серверное приложение на qt. Нашёл базовые раелизации в примерах qt с tcpSocetoм(клиент и сервер), но они работают...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru