![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
Здравствуйте. Помогите советом. Ситуация. Есть у меня класс СomPort который работает с коннекциями, там же хранится список всех сокетов.
Есть класс Game, который включает в себя ComPort
В класе Game, будет список игровых обьектов, некоторые из них отвечают сокетам из класса ComPort. Вот приходят данные на сокет, я их должен каким то образом передать игровому клиенту, и наоборот, клиент должен отправить данные. Собсно вопрос ка лучше релизовать соответвия игровых обьектов и сокетов с точки зрения архитектуры? -------------------- Иногда переменная - это просто переменная |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
если клиенты жестко привязаны к сокетам, то можно просто передавать им ссылку на отправку данных.
Если нет, то они должны пользоваться методом Game для отправки данных с указанием идентификатора, по которому уже можно определить через какой сокет отправлять. На счет получения - тоже самое. |
|||
|
||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
Вопрос то как раз и в том как связать игровые обьекты и сокеты, что бы при отправке не бегать фором?? -------------------- Иногда переменная - это просто переменная |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
каждый контролер сокета может хранить список ассоциированных с ним объектом, и передавать им (может по условию) приходящие данные, ну так хранить ссылку например на сокет .. для более точного ответа, мало информации о Вашей игре. |
||||
|
|||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
mes,
Насчет игры, все еще на стадии планирования архитектуры. Я пока реализовал класс коннеций, где сохраняются все сокеты и где можно принимать и откуда можна отправлять данные. Дальше будет класс самой игры который подпишется на событие onread сокетов, и будет получать уведомление от класса сокетов. Вот тут то и нужно придумать систему по которой сокет будет знать какому обьекту он пренадлежит, и при отправеке клиент также должен знать какой сокет ему пренадлежит. -------------------- Иногда переменная - это просто переменная |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Ну а подписываться каждому объекту на свой сокет, сохраняя также внутри себя ссылку на подписанный сокет нельзя ? Добавлено @ 16:36 P.S. только конечно лучше работать не с сырым сокетом, а удобной оболочкой над ним и соответсвенно подписываться не к самому сокету, а к оболочке. Это сообщение отредактировал(а) mes - 29.12.2009, 16:36 |
|||
|
||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
Я вот и думаю, ну тогда нужно в евентах передавать сокет(струтктуру которая его содержит). И, наверное нужно в этой структуре сохранить ссылку на обьект. Можно сделать что то типа моста где сохранить ссылки на обьект и сокет а ссылку на мост хрантиь и в обьекте и в струтуре с сокетом. Как лучше? -------------------- Иногда переменная - это просто переменная |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Graf_h, а почему нельзя сокет хранить внутри объекта, который с ним и работает? Или, как вариант, каждый объект хранит "умный указатель" на ассоциированный сокет.
|
|||
|
||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
Пришли данные, я их выдаю на верх в GameServer. я не смог по сокету определить обьект, нужне либо фор, либо хеш, либо еще что то( -------------------- Иногда переменная - это просто переменная |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
ну если выдаете наверх, то должны снабдить идентификатором.. можно выдавать сразу в нужное место.. можно выдавать через прослойку (биндер) которая будет снабжать нужным идентификатором, ну или искать по карте , если предыдущие варианты не подошли. Добавлено через 1 минуту и 13 секунд в любом случае в теме мало информации, чтоб можно было нормально обсудить.. |
|||
|
||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
Всем большое спасибо за советы
-------------------- Иногда переменная - это просто переменная |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |