forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   С# (http://forum.boolean.name/forumdisplay.php?f=128)
-   -   расширяемый Stream (http://forum.boolean.name/showthread.php?t=18170)

Reizel 09.05.2013 10:09

расширяемый Stream
 
по сети (TCP) летят данные на сервер. За один "Receive" может прилелеть и половина, и полтора сообщения (ибо они у меня просто как байт-массивы).
По логике нужно бы создать поток, в конец которого я буду записывать приходящие данные, а читать их уже в удобном виде из этого потока.
Какое решение можно придумать?
смотрел в сторону MemoryStream, но не понял - то ли он расширяем, то ли еще чего, непонятно. К тому же не ясно, будет ли он удалять из памяти прочитанные данные

Dream 09.05.2013 18:26

Ответ: расширяемый Stream
 
ну юзай Queue (первый вошел первый вышел)

h1dd3n 09.05.2013 18:30

Ответ: расширяемый Stream
 
Ты же посылаешь сообщения (пакеты), то есть на сервере надо просто разделить буффер (обычный массив, в который записываются принятые байты) на пакеты (сообщения).
На примере: структура пакета - первые 2 байта обозначают длину пакета, а дальше идут данные, тогда просто создаешь цикл в котором читаешь 2 байта узнаешь длину пакета, и "пытаешься" прочесть данные, если данные пришли (полностью), тогда считываешь, удаляешь. Если не пришли (пришли не полностью), тогда оставляешь до следующего recv().


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot