Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Socket теряет сообщения (http://www.flasher.ru/forum/showthread.php?t=149048)

gloomyBrain 20.01.2011 13:55

В первые 2 байта сообщения можно писать длину его содержимого.
Как только пришло сообщение - смотрим, сколько байт пришло и сколько нам нужно (по первым 2-м байтам).
Если пришло столько сколько нужно - значит все ок, просто ждем следующего
Если пришло меньше чем нужно - ждем следующего и дописываем недостающую часть в буфер. Потом диспатчим, что пришел пакет.
Если пришло больше чем нужно - отрезаем нужное, а с остатком поступаем как с новым сообщением.

ChuwY 20.01.2011 13:58

Цитата:

Сообщение от gloomyBrain (Сообщение 966212)
В первые 2 байта сообщения можно писать длину его содержимого.
Как только пришло сообщение - смотрим, сколько байт пришло и сколько нам нужно (по первым 2-м байтам).
Если пришло столько сколько нужно - значит все ок, просто ждем следующего
Если пришло меньше чем нужно - ждем следующего и дописываем недостающую часть в буфер. Потом диспатчим, что пришел пакет.
Если пришло больше чем нужно - отрезаем нужное, а с остатком поступаем как с новым сообщением.

Я примерно так и делал. Хотелось узнать, кто какие "протоколы" использует.

Просто
Цитата:

У меня так и не получилось получить несоответствие числа отправок и числа получений.
смутило.

gloomyBrain 20.01.2011 14:05

Это относится к склейке маленьких пакетов. Правда сервер я писал на jav'е. Но со стороны клиента склейки точно не было.

chuvak2008f 31.05.2011 19:10

Обрезаем символы (AS2):
Код AS1/AS2:

var st1:String="c\x00deffgfggfrty56f\x00ghi";
var mass:Array = new Array;
mass = st1.split("\x00");
st1 = mass.join("");
trace(st1);

Обрезаем символы (AS3):
Код AS3:

var st1:String="c\x00deffgfggfrty56f\x00ghi";
st1 = st1.replace(/\x00/g, "");
trace(st1);



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

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