Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Java - Коммуникация Клиент-Клиент, Клиент-Сервер

Ответить
Настройки темы
Java - Коммуникация Клиент-Клиент, Клиент-Сервер

Новый участник


Сообщения: 5
Благодарности: 1

Профиль | Отправить PM | Цитировать


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

А теперь о моей проблеме.

По проэкту в университете моей группе (6 человек) было поставлено следующее задание.
Мы должны создать игру в шашки, у нас должен быть клиент, в котором можна играть и отсилать сообщения с помощью общего чата.
Есть также сервер который должен сохранять информацию по поводу игроков, которые зарегестрированы, какие игры в шашки они выиграли, проиграли и т.д., в общем итоге ведение простой статистики.
Игроки же играют не локально друг с другом, а через интернет.

Вопрос который у меня возникает, это как осуществить коммуникацию в общем в проэкте.

Ах да забыл сказать, что на одном клиенте можна играть максимум 5 игр одновременно, причём для каждой игры открыт новый Таб, но это не важно. Важен сам факт что я вижу две возможности коммуникации через сокеты:
1) Для отправки сообщений в чат, исползуеться коммуникация Клиент <-> Сервер <-> Клиенты, которые находяться в онлайне(тоесть броудкаст)
Для отправки актуальной доски (тоесть позиций фишек, после того как человек сделал свой ход) используеться коммуникация Клиент(я) <-> Сервер <-> Клиент (противник).
Для сохранения статистики победивший, отсылает информацию на Сервер, которую сервер сохраняет в БД.

2) Для отправки сообщений в чат, исползуеться коммуникация Клиент <-> Сервер <-> Клиенты, которые находяться в онлайне(тоесть броудкаст)
Для отправки актуальной доски (тоесть позиций фишек, после того как человек сделал свой ход) используеться коммуникация Клиент(я) <-> Клиент (противник).
Для сохранения статистики победивший, отсылает информацию на Сервер, которую сервер сохраняет в БД.


Так как я пока что не очень разбираюсь в программировании сокетов, у меня такой будет вопрос, какой из вариантов лучше для коммуникации ?
Если брать второй вариант, нужны ли для коммуникации многие порты, в данном случае 5, так как можно вести 5 игр одновременно, или всё можно делать через один порт ?

Надеюсь я компакто и понятно обьеснил свою проблему, и надеюсь на ваши ответы и помощь.

П.С. я не нуждаюсь в чистом соурс коде, мне просто нужна помощь в понятии самого процесса этой коммуникации.

Заранее спасибо.

Отправлено: 13:58, 17-06-2011

 

Аватара для lxa85

Необычный


Contributor


Сообщения: 4462
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Цитата pivster:
П.С. я не нуждаюсь в чистом соурс коде, мне просто нужна помощь в понятии самого процесса этой коммуникации. »
http://download.oracle.com/javase/tu...rking/sockets/
Как отладишь механизм передачи сообщений, все остальное станет делом техники и аккуратного программирования.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:06, 17-06-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 5
Благодарности: 1

Профиль | Отправить PM | Цитировать


Спасибо огромное за ответ, я обязательно ещё раз пройдусь по этому туториалу.

Если не сложно, скажи, с твоей точки зрения, какая из архитектур лучше ?

Отправлено: 14:35, 17-06-2011 | #3


Аватара для lxa85

Необычный


Contributor


Сообщения: 4462
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


pivster, я честно сказать не понял, в чем у них принципиальная разница. По реализации и то и то возможно. Самое критичное, что я могу предположить - нехватка времени в конце партии. Соотв. лучше отдать приоритет игре, и свести общение клиентов только с теми кто играет в первую очередь и с наблюдающими во вторую. Чат - ну так, некритичное баловство.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:54, 17-06-2011 | #4


Новый участник


Сообщения: 5
Благодарности: 1

Профиль | Отправить PM | Цитировать


Принципиальной разницы как таковой в принципе и нету. Просто мне кажеться чтобы разгрузить сервер, лучше делать отправку ходов между клиентами, а не через сервер, что уменьшит загружаемось сервера.
Давай я попробую описать своё понимание коммуникации между клиентами, возможно у меня просто напросто проблема в мишлении.

И так, состояние доски передаёться только между клиентами которые друг с другом играют.
5 открытых игр.

У каждого клиента значит должен быть лисенер на порт. Вопрос, чтобы вести 5 игр, или ожидать подключение от 5 клиентов, надо 5 паралельных лисенеров на разных портах ? или же соединения с 5 клиентами будет проходить через один порт, и каждому клиенту надо только один лисенер ?

лисенер в смысле ожидания подключения естественно.

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

Отправлено: 15:04, 17-06-2011 | #5


Аватара для lxa85

Необычный


Contributor


Сообщения: 4462
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Цитата pivster:
Ах да по поводу чата, это не некритичное баловство, чат должен быть, такое задание проэкта. »
Я несколько в другом смысле Ко времени - это не критичное баловство. Т.е. исход игры не зависит от того, прочтет ли игрок сообщение сейчас или секунду, две после. А вот партия - зависит. Т.к. в конце партий (5 минутка допустим) время будет пиковой характеристикой.
Цитата pivster:
У каждого клиента значит должен быть лисенер на порт. Вопрос, чтобы вести 5 игр, или ожидать подключение от 5 клиентов, надо 5 паралельных лисенеров на разных портах ? или же соединения с 5 клиентами будет проходить через один порт, и каждому клиенту надо только один лисенер ? »
Опять таки это реализуемо и так и так. Можно в дальнейшем 5 различных портов адресовать 5 различным потокам программы, но это в большей степени будет относится к игре с искусственным интеллектом.
Передачу доски - можно свести к оправке 64х байт с избытком, т.е. не такое уж и большое сообщение, чтобы "забивать" канал связи. Соотв. не столь сложный алгоритм синтеза и разбора сообщения. Можно конечно поиграть со скоростями синтеза/разбора на синтетических тестах, и выбрать оптимальный. Это добавить работе плюсов.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 15:34, 17-06-2011 | #6


Новый участник


Сообщения: 5
Благодарности: 1

Профиль | Отправить PM | Цитировать


По поводу передачи самой доски:
мы собираемся только передавать 3 ключа длиной в 32 знака.
Тоесть:

Black = {0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
White = {0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
King = {0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}

Первые два ключа это позиция фишек на доске, третий ключ, если сопоставить один из первых двух с третим, определяет где стоит дамка. Простая логика, так сказать.

Для начала я думаю, создам сегодня тестовые клиенты, чтобы увидеть просто как в действительности работать с сокетами при подключении клиент <-> клиенты. Практика всё таки я думаю сможет помочь продвинуться в этом направление

Отправлено: 15:51, 17-06-2011 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Java - Коммуникация Клиент-Клиент, Клиент-Сервер

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интернет - Не работает DHCP-клиент и DNS-клиент influte Microsoft Windows 7 1 17-05-2010 13:12
сервер терминалов - клиент VPN osaka Microsoft Windows NT/2000/2003 1 26-04-2010 01:40
клиент и сервер рассылка msgbox/ JaguarSP AutoIt 0 24-04-2010 08:41
VPN - OpenVPN одновременно сервер и клиент migunov Сетевые технологии 6 24-06-2008 11:10
[решено] Клиент сетей Microsoft загружается первым, а затем клиент Novell Guest Microsoft Windows NT/2000/2003 7 20-10-2004 13:31




 
Переход