расширяемый Stream
по сети (TCP) летят данные на сервер. За один "Receive" может прилелеть и половина, и полтора сообщения (ибо они у меня просто как байт-массивы).
По логике нужно бы создать поток, в конец которого я буду записывать приходящие данные, а читать их уже в удобном виде из этого потока. Какое решение можно придумать? смотрел в сторону MemoryStream, но не понял - то ли он расширяем, то ли еще чего, непонятно. К тому же не ясно, будет ли он удалять из памяти прочитанные данные |
Ответ: расширяемый Stream
ну юзай Queue (первый вошел первый вышел)
|
Ответ: расширяемый Stream
Ты же посылаешь сообщения (пакеты), то есть на сервере надо просто разделить буффер (обычный массив, в который записываются принятые байты) на пакеты (сообщения).
На примере: структура пакета - первые 2 байта обозначают длину пакета, а дальше идут данные, тогда просто создаешь цикл в котором читаешь 2 байта узнаешь длину пакета, и "пытаешься" прочесть данные, если данные пришли (полностью), тогда считываешь, удаляешь. Если не пришли (пришли не полностью), тогда оставляешь до следующего recv(). |
Часовой пояс GMT +4, время: 07:50. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot