Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > С#

С# Средство разработки на платформе .Net

Ответ
 
Опции темы
Старый 09.05.2013, 06:09   #1
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,573
Написано 407 полезных сообщений
(для 863 пользователей)
расширяемый Stream

по сети (TCP) летят данные на сервер. За один "Receive" может прилелеть и половина, и полтора сообщения (ибо они у меня просто как байт-массивы).
По логике нужно бы создать поток, в конец которого я буду записывать приходящие данные, а читать их уже в удобном виде из этого потока.
Какое решение можно придумать?
смотрел в сторону MemoryStream, но не понял - то ли он расширяем, то ли еще чего, непонятно. К тому же не ясно, будет ли он удалять из памяти прочитанные данные
__________________
(Offline)
 
Ответить с цитированием
Старый 09.05.2013, 14:26   #2
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: расширяемый Stream

ну юзай Queue (первый вошел первый вышел)
(Offline)
 
Ответить с цитированием
Старый 09.05.2013, 14:30   #3
h1dd3n
Бывалый
 
Аватар для h1dd3n
 
Регистрация: 19.06.2008
Сообщений: 677
Написано 263 полезных сообщений
(для 448 пользователей)
Ответ: расширяемый Stream

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


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 22:52.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com