|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Java - Коммуникация Клиент-Клиент, Клиент-Сервер |
|
Java - Коммуникация Клиент-Клиент, Клиент-Сервер
|
Новый участник Сообщения: 5 |
Профиль | Отправить PM | Цитировать Привет всем, для начала хочю сказать всем спасибо, кто поддерживает данный проэкт.
А теперь о моей проблеме. По проэкту в университете моей группе (6 человек) было поставлено следующее задание. Мы должны создать игру в шашки, у нас должен быть клиент, в котором можна играть и отсилать сообщения с помощью общего чата. Есть также сервер который должен сохранять информацию по поводу игроков, которые зарегестрированы, какие игры в шашки они выиграли, проиграли и т.д., в общем итоге ведение простой статистики. Игроки же играют не локально друг с другом, а через интернет. Вопрос который у меня возникает, это как осуществить коммуникацию в общем в проэкте. Ах да забыл сказать, что на одном клиенте можна играть максимум 5 игр одновременно, причём для каждой игры открыт новый Таб, но это не важно. Важен сам факт что я вижу две возможности коммуникации через сокеты: 1) Для отправки сообщений в чат, исползуеться коммуникация Клиент <-> Сервер <-> Клиенты, которые находяться в онлайне(тоесть броудкаст) Для отправки актуальной доски (тоесть позиций фишек, после того как человек сделал свой ход) используеться коммуникация Клиент(я) <-> Сервер <-> Клиент (противник). Для сохранения статистики победивший, отсылает информацию на Сервер, которую сервер сохраняет в БД. 2) Для отправки сообщений в чат, исползуеться коммуникация Клиент <-> Сервер <-> Клиенты, которые находяться в онлайне(тоесть броудкаст) Для отправки актуальной доски (тоесть позиций фишек, после того как человек сделал свой ход) используеться коммуникация Клиент(я) <-> Клиент (противник). Для сохранения статистики победивший, отсылает информацию на Сервер, которую сервер сохраняет в БД. Так как я пока что не очень разбираюсь в программировании сокетов, у меня такой будет вопрос, какой из вариантов лучше для коммуникации ? Если брать второй вариант, нужны ли для коммуникации многие порты, в данном случае 5, так как можно вести 5 игр одновременно, или всё можно делать через один порт ? Надеюсь я компакто и понятно обьеснил свою проблему, и надеюсь на ваши ответы и помощь. П.С. я не нуждаюсь в чистом соурс коде, мне просто нужна помощь в понятии самого процесса этой коммуникации. Заранее спасибо. |
|
Отправлено: 13:58, 17-06-2011 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Цитата pivster:
Как отладишь механизм передачи сообщений, все остальное станет делом техники и аккуратного программирования. |
|
------- Отправлено: 14:06, 17-06-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Спасибо огромное за ответ, я обязательно ещё раз пройдусь по этому туториалу.
Если не сложно, скажи, с твоей точки зрения, какая из архитектур лучше ? |
Отправлено: 14:35, 17-06-2011 | #3 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать pivster, я честно сказать не понял, в чем у них принципиальная разница. По реализации и то и то возможно. Самое критичное, что я могу предположить - нехватка времени в конце партии. Соотв. лучше отдать приоритет игре, и свести общение клиентов только с теми кто играет в первую очередь и с наблюдающими во вторую. Чат - ну так, некритичное баловство.
|
------- Отправлено: 14:54, 17-06-2011 | #4 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Принципиальной разницы как таковой в принципе и нету. Просто мне кажеться чтобы разгрузить сервер, лучше делать отправку ходов между клиентами, а не через сервер, что уменьшит загружаемось сервера.
Давай я попробую описать своё понимание коммуникации между клиентами, возможно у меня просто напросто проблема в мишлении. И так, состояние доски передаёться только между клиентами которые друг с другом играют. 5 открытых игр. У каждого клиента значит должен быть лисенер на порт. Вопрос, чтобы вести 5 игр, или ожидать подключение от 5 клиентов, надо 5 паралельных лисенеров на разных портах ? или же соединения с 5 клиентами будет проходить через один порт, и каждому клиенту надо только один лисенер ? лисенер в смысле ожидания подключения естественно. Ах да по поводу чата, это не некритичное баловство, чат должен быть, такое задание проэкта. Наблюдателей у партии небудет, только два игрока. Остальные же знают только, что некий игрок ведёт некоторое количество партий, с кем именно, знать им не обязательно. |
|
Отправлено: 15:04, 17-06-2011 | #5 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Цитата pivster:
Цитата pivster:
Передачу доски - можно свести к оправке 64х байт с избытком, т.е. не такое уж и большое сообщение, чтобы "забивать" канал связи. Соотв. не столь сложный алгоритм синтеза и разбора сообщения. Можно конечно поиграть со скоростями синтеза/разбора на синтетических тестах, и выбрать оптимальный. Это добавить работе плюсов. |
||
------- Отправлено: 15:34, 17-06-2011 | #6 |
Новый участник Сообщения: 5
|
Профиль | Отправить 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 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интернет - Не работает 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 |
|