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

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

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

Регистрация: Jan 2007
Адрес: [1,1,1]
Сообщений: 135
Записей в блоге: 2
Отправить сообщение для PeTa4eK с помощью ICQ
По умолчанию Socket или XMLSocket, что лучше?

Привет всем

В общем назрел такой вопрос.

Я сейчас для передачи данных использую XMLSocket, ибо это просто, особенно для передачи текста. Но вот хочетсо узнать насчет скорости, у какого сокета задержка ниже?
Или они передают данные одинаково(возможно различия в типах передаваеммых данных)?

Очень хотелось бы узнать =)

Уже сделал несколько реалтайм игрушек, в большинстве случаев при запросах создается довольно сильная задержка... Но в локальной сети играть можно х)


Последний раз редактировалось PeTa4eK; 21.06.2010 в 09:40.
Старый 21.06.2010, 11:04
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 2  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Как вы сами говорите - в локальной сети играть можно. Значит дело не в задержках на стороне клиента.
Т.е. пофиг: Socket или XMLSocket.

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

Кроме того, большую роль играет серверная реализация и настройки протокола tcp/ip (алгоритм Нейгла)

а вообще - бинарный Socket лучше)
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 21.06.2010 в 11:07.
Старый 21.06.2010, 13:11
PeTa4eK вне форума Посмотреть профиль Отправить личное сообщение для PeTa4eK Найти все сообщения от PeTa4eK
  № 3  
Ответить с цитированием
PeTa4eK
 
Аватар для PeTa4eK

Регистрация: Jan 2007
Адрес: [1,1,1]
Сообщений: 135
Записей в блоге: 2
Отправить сообщение для PeTa4eK с помощью ICQ
Ок, спасибо за ответы)) Я этот алгоритм нейгла отключил совсем)) Дабы задержку понизить.

Ибо на сайте сказали он особо не нужен для игр где важна маленькая задержка.

Старый 12.01.2012, 19:34
Ralph_DiMarko вне форума Посмотреть профиль Отправить личное сообщение для Ralph_DiMarko Найти все сообщения от Ralph_DiMarko
  № 4  
Ответить с цитированием
Ralph_DiMarko
 
Аватар для Ralph_DiMarko

Регистрация: Dec 2008
Адрес: Одесса
Сообщений: 129
У меня похожий вопрос.
Сделали чат, клиент начал делать на ас2 (не спешите фукать, есть старый большой рабочий проект на ас2 надо внедрить чат в него), мучился день так и ничего не получилось через xmlsocket заставить заработать.
Код AS1/AS2:
var _serverURL:String = "192.168.1.199";
var _serverPORT:Number = 8883;
var _socketXML:XMLSocket;
_socketXML = new XMLSocket();
_socketXML.onConnect = onServerConnect;
_socketXML.onClose = onServerClose;
//_socketXML.onData = onServerData;
_socketXML.onXML = onServerData;
_socketXML.connect(_serverURL, _serverPORT);
Коннект true, но вот получить в ответ что либо от сервера не получается.

На второй день решил на всяк проснифить (wireshark), к моему огорчению данные таки шлются и сервер отвечает все как надо, но флеш ничего не видит, не принимает, не хочет.

Начал делать на ас3 xmlsocket, та же фигня...

Попробовал через обычный сокет
Код AS3:
_host = "192.168.1.199";
_port = 8883;
_s = new Socket();
_s.addEventListener(Event.CONNECT, onSConnect);
_s.addEventListener(ProgressEvent.SOCKET_DATA, onSData);
_s.addEventListener(IOErrorEvent.IO_ERROR, onSIOError);
_s.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSSecError);
_s.addEventListener(Event.CLOSE, onSClose);
_s.connect(_host, _port);
Код AS3:
_s.writeUTFBytes(data);
Код AS3:
_s.readUTFBytes(e.bytesLoaded)
И все заработало.

Объясните пожалуйста есть ли существенная разница, что он не хочет работать через xmlsocket, сервер на руби, может чего упустил важного? Спасибо.

-------------
upd

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


Последний раз редактировалось Ralph_DiMarko; 16.01.2012 в 20:43. Причина: решилось
Создать новую тему Ответ Часовой пояс GMT +4, время: 23:55.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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