11.03.2014 / 20:33 | |
ProstoDimaO47 Пользователь Сейчас: Offline
Имя: Дима Откуда: Днепродзержинск Регистрация: 05.08.2013
| Virus-ON, Ну номр,но название метода... Мне оно непонятно. onReceive - во время принятия?
|
11.03.2014 / 20:35 | |
Oak Пользователь Сейчас: Offline
Имя: Коля Откуда: Москва Регистрация: 02.06.2010
| Virus-ON (11.03.2014/20:20)Напишу глупость, наверное. Интерфейс использовать?public void onRecive(Client c){//БЛА БЛА БЛАonSend(c,info);} Да нет, норм, но можетв мультипоточности плохо сказаться. Лучше полученные сообщения в очередь добавлять, а потом обрабатывать в основном потоке сервера. __________________
Эль Презеденте Изменено Oak (11.03 / 20:36) (всего 1 раз) |
11.03.2014 / 21:22 | |
DominaN Пользователь Сейчас: Offline
Имя: Кирилл Откуда: Смоленск Регистрация: 28.09.2011
| можно завести стек сообщений. Вообще универсальных решений нету, в том же HLSDK сетевой код очень запутанный, но основной механизм построен на мессаджах, причем они непосредственно передаются по сети массивом байт, отделяясь заголовками. Также неплохо использовать дельта-компрессию. На клиенте стоит прослушка сообщений в методах HookMessage, причем каждую мессагу надо декларировать как на сервере так и на клиенте
Изменено DominaN (11.03 / 21:23) (всего 1 раз) |
12.03.2014 / 05:09 | |
Oak Пользователь Сейчас: Offline
Имя: Коля Откуда: Москва Регистрация: 02.06.2010
| DominaN, ты наверное хотел сказать про очередь, а не стек
__________________
Эль Презеденте |
12.03.2014 / 06:52 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| Кажется, я придумал, как лучше всего сделать. В классе Server/Client создаём цикл чтения, в котором считаем статус и по ссылке на игровой класс инициализируем то или иное состояние. int status;
do {
status = dis.readByte();
switch (status) {
case INIT_GAME:
long seed = dis.readLong();
game.initGame(seed);
break;
}
} while (status != END_OF_GAME);
А отсылать данные уже можно в отдельных методах, типа sendSeed(), sendMove() или через очередь сообщений, чтоб уж наверняка. __________________
let live |
12.03.2014 / 10:23 | |
Koenig Модератор форума Сейчас: Offline
Имя: Дмитрий Откуда: Калининград(Koenigsberg) Регистрация: 23.01.2011
| Oak, просто недавно более глубоко копнул обсервер, не так часто я и рекомендую, я обычно просто так не рекомендую ) , можно попробовать несколько вариантов, просто через обсервер можно подключать множество слушателей, и если на сервере что то меняется, все сообщается слушателям
__________________
Магистр Мёда |
12.03.2014 / 10:27 | |
Koenig Модератор форума Сейчас: Offline
Имя: Дмитрий Откуда: Калининград(Koenigsberg) Регистрация: 23.01.2011
| постоянный цикл не лучшее решение, по сути если сервер на пхп, то запросы с клиента передаются скажем пост методом на скрипт, там уже идет в обработчик полученные данные, например файлы ин и аут, один принимает, второй отдает, по типу апи, можно и сессии для каждого клиента организовать и прочее
__________________
Магистр Мёда |
12.03.2014 / 13:08 | |
DominaN Пользователь Сейчас: Offline
Имя: Кирилл Откуда: Смоленск Регистрация: 28.09.2011
| На J2ME нет Query классов
|
12.03.2014 / 14:14 | |
Oak Пользователь Сейчас: Offline
Имя: Коля Откуда: Москва Регистрация: 02.06.2010
| DominaN (12.03.2014/13:08)На J2ME нет Query классовОчередь — не самая сложная для реализациии структура.
__________________
Эль Презеденте |
12.03.2014 / 14:18 | |
Oak Пользователь Сейчас: Offline
Имя: Коля Откуда: Москва Регистрация: 02.06.2010
| Koenig (12.03.2014/10:23)Oak, просто недавно более глубоко копнул обсервер, не так часто я и рекомендую, я обычно просто так не рекомендую ) , можно попробовать несколько вариантов, просто через обсервер можно подключать мноПо идее у класса работы с сетью не должно быть много обработчиков, потому что для остального приложения работа с сетью должна быть скрыта, остальные компоненты должны получать данные/сообщения. Иначе говоря работа с сетью должна быть описана видом "один к одному", где полученные по сети сообщения/данные должны передаваться в обработчик (или реквестироваться обработчиком), уже который будет решать, куда направить эти сообщения/данные.
__________________
Эль Презеденте |