Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Socket+string (http://www.flasher.ru/forum/showthread.php?t=86906)

RadiationX 25.10.2006 13:35

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();

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

MerlinTwi 25.10.2006 13:48

Если все передается с завершающим нуль-байтом и нет бинарных данных, то почему бы не работать с прежним XMLSocket?

RadiationX 25.10.2006 13:56

Кроме строки могут быть любые другие данные.

MerlinTwi 25.10.2006 14:15

Тогда нуль-байт тут вообще не причем. Метод writeObject записывает объект в виде последовательности байтов в формате AMF serialized format.
И для того чтобы корректно читать эту информацию на стороне сервера, не надо изобретать велосипед, а подключить библиотеку понимающую AMF.

Nirth 25.10.2006 16:02

Зачем ты пишешь объект? напиши байты по одному.

RadiationX 25.10.2006 16:59

Попробую сформулировать вопрос по другому:

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

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

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

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

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

etc 25.10.2006 17:13

А почему ты не юзаешь writeMultibyte, к примеру?

RadiationX 25.10.2006 17:44

Проверил writeMultibyte, работает нормально. Остается чтение строки. Есть readMultibyte, но там необходимо указывать длину строки. Наверное придется ее указывать при отправке со стороны сервера.

etc 25.10.2006 17:49

А bytesAvailable для чего?
Все ответы на вопросы описаны в хелпе, собственно.

RadiationX 25.10.2006 17:51

А если отправляю целую структуру данных? Несколько различных строк, потом еще что-нибудь.


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

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