Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 08.03.2014, 03:09
Anabel вне форума Посмотреть профиль Отправить личное сообщение для Anabel Найти все сообщения от Anabel
  № 1  
Ответить с цитированием
Anabel

Регистрация: Apr 2013
Сообщений: 82
По умолчанию Флеш, передача данных через сокет сервер (Java)

Доброй ночи! Может у кого-то где-то завалялась хорошая ссылка или статья про передачу данных мувиков (координаты, типы мувиков), можете оставить? Интернет желаемых результатов не дал. Заранее выражаю благодарность.

Старый 08.03.2014, 04:45
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Задача не вполне ясна, я как человек много работающий с ЯваСерверами готов вам помочь, но пока непонятно чем.
Дайте конкретику
__________________
Марк Tween

Старый 08.03.2014, 11:49
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 3  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Какая разница, на чем написан сервер? Полнодуплексный сокет шлет данные в обоих направлениях в виде байтов. Бинарный протокол разрабатывается фронтэндом вместе с бэкэндером, в результате чего пакет данных, которые в сокете склеиваются в один поток, принято делать из двух основных частей:
1. первые 4 байта (увеличить при необходимости) определяют размер пакета
2. остальные байты размерностью int-числа в первых четырех байтах являются уже необходимой передаваемой информацией, которая может быть чем угодно и может делиться еще на более мелкие структуры (например, первый байт может указывать на тип передаваемой команды).

Я писал как-то статьи
http://www.flasher.ru/forum/blog.php?b=579
http://www.flasher.ru/forum/blog.php?b=580
http://www.flasher.ru/forum/blog.php?b=581
Единственное, в комментариях к коду считывания пакета через try-catch есть более лаконичный и быстрый вариант с обычным циклом while (я поясняю, почему я взял именно алгоритм, основанный на try-catch).
__________________
тут я

Старый 08.03.2014, 16:11
Anabel вне форума Посмотреть профиль Отправить личное сообщение для Anabel Найти все сообщения от Anabel
  № 4  
Ответить с цитированием
Anabel

Регистрация: Apr 2013
Сообщений: 82
С этими статьями была встреча Причём одна из первых. Они помогли мне установить соединение с сокет-сервером, но сейчас меня интересует как передавать определённые типы данных. Пример: играют два игрока, они передвигают (каждый) с десяток мувиков, которые в массивах каждого игрока (Riba). Нужно передать друг-другу информацию, про эти мувики, а именно:
а) тип Karas:
Код AS3:
var ribka4:Karas = new Karas();
б) координаты каждого объекта массива Riba.
Просто передать тип объекта могу(как строку), а вот как ещё передать вместе с типом ещё и координаты? Да потом ещё и правильно раскодировать?

Старый 08.03.2014, 16:41
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 5  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Продумайте протокол. Одни из вариантов:
1. сериализовать нужную информацию в JSON
2. сериализовать нужную информацию в XML
3. если установить, скажем, первым байтом основной части "пакета" тип пакета в идентифицирующий команду "передвигать", то в последующие байты за типом пакета можно вписать конструкции вида
[длина строки типа объекта : int/short][строка типа объекта][координата по Х : int][координата по Y : int]
друг за другом. Таким образом, когда вы получите конечный пакет, можно последовательно посчитывать все необходимые данные и заполнить массив. На сервер уже, исходя из команды, помещенной в пакет, правильно парсить входящую информацию, аналогично на клиентах.

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

Проявите фантазию, это ведь такое поле для размышлений =)
__________________
тут я

Старый 08.03.2014, 22:29
KumoKairo вне форума Посмотреть профиль Отправить личное сообщение для KumoKairo Найти все сообщения от KumoKairo
  № 6  
Ответить с цитированием
KumoKairo
 
Аватар для KumoKairo

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
Раз пошел разговор про протоколы, посоветую Protobuf - это самый легковесный вариант среди возможных трех (XML, JSON, Protobuf)
https://code.google.com/p/protobuf/
Реальный опыт работы был, делали как раз через AS3 -> Java -> AS3
Очень удобно, очень быстро.

Несмотря на то, что гугл уверяет, что использует этот протокол повсеместно для RPC, для REST (и для вашего конкретного случая) он подходит как нельзя лучше.

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

---- UPD ----
Открыл полистать КорДумовские статьи, я не знал на что подписался предлагая Протобуф
Холивар я начинать не собираюсь, двусмысленности в словах не ищите


Последний раз редактировалось KumoKairo; 08.03.2014 в 23:34.
Старый 10.03.2014, 00:36
Anabel вне форума Посмотреть профиль Отправить личное сообщение для Anabel Найти все сообщения от Anabel
  № 7  
Ответить с цитированием
Anabel

Регистрация: Apr 2013
Сообщений: 82
После сравнений, всё же легковесность желательней, спасибо за консультацию.

Старый 10.03.2014, 08:26
bifidokk вне форума Посмотреть профиль Отправить личное сообщение для bifidokk Найти все сообщения от bifidokk
  № 8  
Ответить с цитированием
bifidokk
 
Аватар для bifidokk

Регистрация: Jan 2011
Сообщений: 200
мне вот этот протокол советовали посмотреть, но пока, честно говоря, руки не дошли
http://msgpack.org/

Старый 10.03.2014, 09:47
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 9  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Цитата:
1. первые 4 байта (увеличить при необходимости) определяют размер пакета
Может, уменьшить? Длина в 4 байта – это 4гб.

Старый 10.03.2014, 09:51
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 10  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Добавлю еще пять копеек:
MessagePack, бинарный, легковесный, скоростной. Немного уступает Protobuf по скорости, но несколько проще в использовании. Есть биндинги для всех популярных языков и платформ, в т.ч. и для AS3. Использую в текущем проекте, не AS3, правда, доволен. Использую как раз из-за простоты и как замену JSON. Бенчмарки, что видел, вполне вдохновляют.
UPD. Не заметил пост выше.

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:40.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 10:40.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.