Вниз  Совершенный код
- 11.03.2014 / 20:33
ProstoDimaO47
  Пользователь

ProstoDimaO47 
Сейчас: Offline
Virus-ON, Ну номр,но название метода... Мне оно непонятно. onReceive - во время принятия?
- 11.03.2014 / 20:35
Oak
  Пользователь

Oak 
Сейчас: Offline
Virus-ON (11.03.2014/20:20)Напишу глупость, наверное. Интерфейс использовать?public void onRecive(Client c){//БЛА БЛА БЛАonSend(c,info);} :gg:Да нет, норм, но можетв мультипоточности плохо сказаться. Лучше полученные сообщения в очередь добавлять, а потом обрабатывать в основном потоке сервера.
__________________
 Эль Презеденте

Изменено Oak (11.03 / 20:36) (всего 1 раз)
- 11.03.2014 / 21:22
DominaN
  Пользователь

DominaN 
Сейчас: Offline
можно завести стек сообщений. Вообще универсальных решений нету, в том же HLSDK сетевой код очень запутанный, но основной механизм построен на мессаджах, причем они непосредственно передаются по сети массивом байт, отделяясь заголовками. Также неплохо использовать дельта-компрессию.
На клиенте стоит прослушка сообщений в методах HookMessage, причем каждую мессагу надо декларировать как на сервере так и на клиенте

Изменено DominaN (11.03 / 21:23) (всего 1 раз)
- 12.03.2014 / 05:09
Oak
  Пользователь

Oak 
Сейчас: Offline
DominaN, ты наверное хотел сказать про очередь, а не стек
__________________
 Эль Презеденте
- 12.03.2014 / 06:52
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Кажется, я придумал, как лучше всего сделать.
В классе Server/Client создаём цикл чтения, в котором считаем статус и по ссылке на игровой класс инициализируем то или иное состояние.
  1. int status;
  2. do {
  3.    status = dis.readByte();
  4.    switch (status) {
  5.       case INIT_GAME:
  6.          long seed = dis.readLong();
  7.          game.initGame(seed);
  8.          break;
  9.    }
  10. } while (status != END_OF_GAME);

А отсылать данные уже можно в отдельных методах, типа sendSeed(), sendMove() или через очередь сообщений, чтоб уж наверняка.
__________________
 let live
- 12.03.2014 / 10:23
Koenig
  Модератор форума

Koenig 
Сейчас: Offline
Oak, просто недавно более глубоко копнул обсервер, не так часто я и рекомендую, я обычно просто так не рекомендую ) , можно попробовать несколько вариантов, просто через обсервер можно подключать множество слушателей, и если на сервере что то меняется, все сообщается слушателям
__________________
 Магистр Мёда
- 12.03.2014 / 10:27
Koenig
  Модератор форума

Koenig 
Сейчас: Offline
постоянный цикл не лучшее решение, по сути если сервер на пхп, то запросы с клиента передаются скажем пост методом на скрипт, там уже идет в обработчик полученные данные, например файлы ин и аут, один принимает, второй отдает, по типу апи, можно и сессии для каждого клиента организовать и прочее
__________________
 Магистр Мёда
- 12.03.2014 / 13:08
DominaN
  Пользователь

DominaN 
Сейчас: Offline
На J2ME нет Query классов
- 12.03.2014 / 14:14
Oak
  Пользователь

Oak 
Сейчас: Offline
DominaN (12.03.2014/13:08)На J2ME нет Query классовОчередь — не самая сложная для реализациии структура.
__________________
 Эль Презеденте
- 12.03.2014 / 14:18
Oak
  Пользователь

Oak 
Сейчас: Offline
Koenig (12.03.2014/10:23)Oak, просто недавно более глубоко копнул обсервер, не так часто я и рекомендую, я обычно просто так не рекомендую ) , можно попробовать несколько вариантов, просто через обсервер можно подключать мноПо идее у класса работы с сетью не должно быть много обработчиков, потому что для остального приложения работа с сетью должна быть скрыта, остальные компоненты должны получать данные/сообщения. Иначе говоря работа с сетью должна быть описана видом "один к одному", где полученные по сети сообщения/данные должны передаваться в обработчик (или реквестироваться обработчиком), уже который будет решать, куда направить эти сообщения/данные.
__________________
 Эль Презеденте
Наверх  Всего сообщений: 233
Фильтровать сообщения
Поиск по теме
Файлы топика (7)