![]() |
Socket+string
1. Есть сокет подключенный к серверу. Сервер отправляет пакет с некоторым количеством строк. Строка завершается 0. Как на AS3 прочитать строки?
2. Для того чтобы отправить строку из AS3 на сервер делаю так: Код:
var s:String = "test"; |
Если все передается с завершающим нуль-байтом и нет бинарных данных, то почему бы не работать с прежним XMLSocket?
|
Кроме строки могут быть любые другие данные.
|
Тогда нуль-байт тут вообще не причем. Метод writeObject записывает объект в виде последовательности байтов в формате AMF serialized format.
И для того чтобы корректно читать эту информацию на стороне сервера, не надо изобретать велосипед, а подключить библиотеку понимающую AMF. |
Зачем ты пишешь объект? напиши байты по одному.
|
Попробую сформулировать вопрос по другому:
1. Записать string в socket и завершить нулевым символом 2. Прочитать из socket с определенной позиции string, который завершается нулевым символом Пункт 1 уже работает, через ByteArray, можно еще попробовать записывать каждый символ отдельно С пунктом 2 пока не знаю, можно считывать по символу и добавлять к строке. Кстати в документации сказано, что AS3 использует UTF16 строки (каждый символ по 2 байта). При получении строки, отправленной из AS3, на сервере, можно читать по одному байту и все будет правильно. Почему? |
А почему ты не юзаешь writeMultibyte, к примеру?
|
Проверил writeMultibyte, работает нормально. Остается чтение строки. Есть readMultibyte, но там необходимо указывать длину строки. Наверное придется ее указывать при отправке со стороны сервера.
|
А bytesAvailable для чего?
Все ответы на вопросы описаны в хелпе, собственно. |
А если отправляю целую структуру данных? Несколько различных строк, потом еще что-нибудь.
|
Ну так посылайте некий байт, который указывает на то, что структура началось здесь и закончилась там. Собирайте всё в одну строку, затем можно парсить структуры.
|
Вопросов больше нет, спасибо за помощь!
Для отправки строк использую writeMultiByte + записываю нулевой символ, для получения - считываю длину строки, затем readMultiByte. |
я шлю длину строки двумя байтами (short), потом строку в UTF-8, и нулевой байт не нужен.
тестировал с джава ByteBuffer работает замечательно. и шлет и читает. |
| Часовой пояс GMT +4, время: 17:58. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.