С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для Pingvinoff
63 / 63 / 15
Регистрация: 20.08.2014
Сообщений: 593

Многопточное клиент-серверное приложение

12.06.2015, 17:09. Показов 1655. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Собственно задача такая:
Кликните здесь для просмотра всего текста
Написать консольное клиент-серверное приложение, реализующее функцию словаря. Словарь должен находиться на сервере и находится в памяти в единственном экземпляре. Таким образом серверное приложение будет иметь один общий словарь для всех клиентов-пользователей. Каждое слово в словаре может иметь несколько значений, но значения не конкретного слова не должны повторятся. Например слово 'man' может иметь значения 'человек' и 'мужчина', но не может иметь значения 'мужчина' и 'мужчина'. В случае если искомого слова в словаре не содержится, клиентское приложение должно сообщить об этом. Сервер должен обрабатывать каждое клиентское соединение в отдельном потоке, т.е. сразу же после подключения очередного клиента сервер тут же должен быть готов принять следующее подключение. Отсюда следует, что необходимо так же позаботиться об одновременном доступе потоков к одному словарю.
Реализация клиент-серверного протокола
В качестве реализации протокола возможен любой из вариантов:
1. свой протокол
2. XML-RPC (библиотека Apache XML-RPC)
3. сериализация объектов (классы ObjectOutputStream, ObjectInputStream)

Ну понятно, что словарь мы завернем в синглтон, он сам просится. А вот как с многопоточностью быть? Я не совсем понимаю. Нет, ну понятно, что будет использован ServerSocket. Но вот даст ли он гарантию одновременного доступа? И как быть с rw-блокировками? В общем вопросов много, ответов мало. На плюсах все было бы на порядок проще. А здесь просто не знаю какие механизмы выбрать, чтобы грамотно реализовать решение.

Добавлено через 3 минуты
Посоветуйте пожалуйста с чего начать. Словарь я уже написал. Использовал множество для обеспечения уникальности значений. С клиентом тоже проблем нет. Там три строчки кода. А вот с сервером нужен совет опытных людей.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.06.2015, 17:09
Ответы с готовыми решениями:

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

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

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

6
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,664
Записей в блоге: 29
12.06.2015, 17:33
1) понятно что серверсокет. Гарантию даст, при аксепте сокета (новый клиент) сразу создаешь новый поток
2) рв блокировки не понадобятся если синхронизируешь свой словарь. Пока один поток с ним работает то второй и последующие ждут.
3) если для словаря юзаешь коллекцию то ее нужно сделать синхронизированной.
4) так как на вход и выход будут простые текстовые значения, то советую юзать ПринтВрайтер и Сканнер для стримов -и проще и ...проще
1
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
12.06.2015, 17:59
зачем синхронизировать доступ? Я не вижу в задании поддержки изменения словаря с клиента. То есть доступ только для чтения и тогда проблем с синхронизацией нет
1
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,664
Записей в блоге: 29
12.06.2015, 18:15
KEKCoGEN, да, согласен, сбили с пути истинного эти рв-блокировки. Ну тогда еще проще.
1
 Аватар для Pingvinoff
63 / 63 / 15
Регистрация: 20.08.2014
Сообщений: 593
13.06.2015, 07:09  [ТС]
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
Я не вижу в задании поддержки изменения словаря с клиента.
KEKCoGEN, Welemir1, Виноват, не дописал, клиенту доступны операции: add, get, remove. Поэтому наверное таки придется решать вопрос с блокировками.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,664
Записей в блоге: 29
13.06.2015, 09:45
Цитата Сообщение от Pingvinoff Посмотреть сообщение
Поэтому наверное таки придется
нет, тогда, как выше и написал не придется, синхронизируй.
1
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
13.06.2015, 13:43
Лучший ответ Сообщение было отмечено Pingvinoff как решение

Решение

Pingvinoff, используйте коллекции из пакета concurrent. Там синхронизация уже поддерживается.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.06.2015, 13:43
Помогаю со студенческими работами здесь

Клиент-серверное приложение
Всем доброго времени суток! Задание: Разработать программу на языке JavaК, демонстрирующую сетевые возможности языка Java. Сетевая...

Клиент серверное приложение на java
Здравствуйте, помогите с данным заданием: 3. Клиентская часть: 1) Графический интерфейс(фрейм), с переключением между командами при...

Клиент-серверное приложение Шилдт
Здравствуйте. Изучаю Java по Шилдту, дошёл до главы 27, раздел удаленный вызов методов. Приводится пример клиент-серверного приложения....

Клиент-серверное приложение. Протокол взаимодействия
Здравствуйте. Сервер может обрабатывать около 300 соединений. Думал реализовать всё на сокетах, но есть одно но. Надо при определенных...

Клиент-серверное приложение отправка сообщений
Помогите разобраться создаю клиент-серверное приложение отправка сообщений. //Сервер package ClientServer; import...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
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
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru