![]() |
|
||||||||||
|
|||||
|
Регистрация: Jan 2012
Сообщений: 836
|
Всем привет. Возник такой вопрос, вообще он возник уже прилично давно, но в то время я еще не особо разобрался с тем, над чем предстояло работать, сейчас более менее стал понимать. В общем клиенту от сервера передается поток данных в виде типа(short) длина(int) и само сообщение. Я читаю сначала длину пакета, а потом тип пакета. Вообще проблема состояла в том, что буффер переполнялся и не очищался. Данная проблема так и не была решена. Приходит сообщение:
var buffer:ByteArray; buffer.length - 212 - это общая длина. length - 99 - это длина сообщения, которая получается при readInt() type - 7 - это тип сообщения, который получается при readShort() Общее количество байт от int + short равно 6, т.к short = 2 байтам, а int = 4. Но buffer.length 212 получается, должно быть 105. Стало быть объединились два потока в один. Считывается в сообщение последний поток, другой же остается висеть в буфере и не очищается соответственно. И вот тут возникает вопрос, как собственно мне дочитать то, что осталось в буфере? Вернее как определить, что сообщение оставшееся в буфере полное? При последующих сообщениях, буфер начинает переполняться. Пакеты склеиваются непосредственно дойдя до клиента, сервер посылает 101 и 99 + 12 байт(т.к 2 сообщения), эти 212 и получаются. Последний раз редактировалось Godwarlock; 05.09.2015 в 20:49. |
![]() |
Часовой пояс GMT +4, время: 21:55. |
|
|
« Предыдущая тема | Следующая тема » |
|
|