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

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

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

Регистрация: Sep 2006
Сообщений: 32
Отправить сообщение для RadiationX с помощью ICQ
По умолчанию Socket+string

1. Есть сокет подключенный к серверу. Сервер отправляет пакет с некоторым количеством строк. Строка завершается 0. Как на AS3 прочитать строки?

2. Для того чтобы отправить строку из AS3 на сервер делаю так:

Код:
var s:String = "test";
var b:ByteArray = new ByteArray();
b.endian = Endian.LITTLE_ENDIAN;
b.writeObject(s);
b.writeByte(0);
socket.writeBytes(b);
socket.flush();
Почему в результате перед нулевым символом появляются два байта, каждый раз разные?

Старый 25.10.2006, 13:48
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 2  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
Если все передается с завершающим нуль-байтом и нет бинарных данных, то почему бы не работать с прежним XMLSocket?
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.

Старый 25.10.2006, 13:56
RadiationX вне форума Посмотреть профиль Отправить личное сообщение для RadiationX Найти все сообщения от RadiationX
  № 3  
Ответить с цитированием
RadiationX

Регистрация: Sep 2006
Сообщений: 32
Отправить сообщение для RadiationX с помощью ICQ
Кроме строки могут быть любые другие данные.

Старый 25.10.2006, 14:15
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 4  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
Тогда нуль-байт тут вообще не причем. Метод writeObject записывает объект в виде последовательности байтов в формате AMF serialized format.
И для того чтобы корректно читать эту информацию на стороне сервера, не надо изобретать велосипед, а подключить библиотеку понимающую AMF.
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.

Старый 25.10.2006, 16:02
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 5  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Зачем ты пишешь объект? напиши байты по одному.
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 25.10.2006, 16:59
RadiationX вне форума Посмотреть профиль Отправить личное сообщение для RadiationX Найти все сообщения от RadiationX
  № 6  
Ответить с цитированием
RadiationX

Регистрация: Sep 2006
Сообщений: 32
Отправить сообщение для RadiationX с помощью ICQ
Попробую сформулировать вопрос по другому:

1. Записать string в socket и завершить нулевым символом

2. Прочитать из socket с определенной позиции string, который завершается нулевым символом

Пункт 1 уже работает, через ByteArray, можно еще попробовать записывать каждый символ отдельно

С пунктом 2 пока не знаю, можно считывать по символу и добавлять к строке.

Кстати в документации сказано, что AS3 использует UTF16 строки (каждый символ по 2 байта). При получении строки, отправленной из AS3, на сервере, можно читать по одному байту и все будет правильно. Почему?

Старый 25.10.2006, 17:13
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
А почему ты не юзаешь writeMultibyte, к примеру?

Старый 25.10.2006, 17:44
RadiationX вне форума Посмотреть профиль Отправить личное сообщение для RadiationX Найти все сообщения от RadiationX
  № 8  
Ответить с цитированием
RadiationX

Регистрация: Sep 2006
Сообщений: 32
Отправить сообщение для RadiationX с помощью ICQ
Проверил writeMultibyte, работает нормально. Остается чтение строки. Есть readMultibyte, но там необходимо указывать длину строки. Наверное придется ее указывать при отправке со стороны сервера.

Старый 25.10.2006, 17:49
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
А bytesAvailable для чего?
Все ответы на вопросы описаны в хелпе, собственно.

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

Регистрация: Sep 2006
Сообщений: 32
Отправить сообщение для RadiationX с помощью ICQ
А если отправляю целую структуру данных? Несколько различных строк, потом еще что-нибудь.

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

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

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


 


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


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