![]() |
|
||||||||||
|
|||||
|
Регистрация: Sep 2011
Сообщений: 3
|
Добрый день. Вопрос по Protobuf.
Есть сервер под Java. Пытаюсь через Protobuf передать объект. Для формирования класса AS3 использую protoc-gen-as3. С сервера Java на клиента объект передается... а вот на оборот передается только когда закрываю окно Flash.. Для передачи данных использую pm.writeExternal(bytes); pm - класс сформированный из proto файла. Код в клиента для отправки в низу. В чем загвоздка... и как передать символ перевода каретки. (socket.wruteMultiBytes('\n', 'UTF-8'); socket.flush(); - в данном случае не работает). var pm:ProtoMessage = new ProtoMessage(); pm.command = 1; pm.par = new Array(); var buf:Param = new Param(); buf.name = 'test1'; buf.value = 'test2'; pm.par.push(buf); try { var bytes:ByteArray = new ByteArray(); pm.writeExternal(bytes); //bytes.compress(); //client.writeBytes(bytes); //client.writeMultiByte('\n', 'UTF-8'); //client.flush(); } catch (e:Error) { trace(e.message); } Последний раз редактировалось ricoshet; 14.09.2011 в 08:29. |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 215
|
Отправляет сразу же.
|
|
|||||
|
Регистрация: Sep 2011
Сообщений: 3
|
Спасибо. Сейчас попробую....
|
|
|||||
|
Регистрация: Mar 2008
Сообщений: 215
|
|
|
|||||
|
Регистрация: Sep 2011
Сообщений: 3
|
Спасибо помогло.... Чудеса на виражах... Изменил исходную задачу - передать только Стринговую строку без параметров:
Код Клиента на АС3: try { var test:Test1 = new Test1(); test.name = "Hello, world"; var buffer:ByteArray = new ByteArray(); test.writeTo(buffer); trace(buffer.length); client.writeBytes(buffer); client.flush(); }catch (e:Error) { trace(e.message); } try{
DataInputStream in = new DataInputStream(client.getInputStream());
byte[] b = new byte[14];
//while(true){
System.out.println(in.read(b));
System.out.println(b);
TestMessage.Test1 test = TestMessage.Test1.parseFrom(b);
System.out.println(test.getName());
//}
} catch(Exception ex){
ex.printStackTrace();
}
14 -- размер буфера [B@1503a3 -- буфер Hello, world -- Мессадж.... И что было не так в прошлом варианте? Добавлено через 8 минут Может кому-то пригодится... Ошибка была в размере буффера на сервере. Переделал по примеру incoob - все заработало... |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:24. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|