Read
возвращает количество прочитанных байтов:
var bytesRead = client.GetStream().Read(bytes, 0, bytes.Length);
, чтобы вы могли использовать следующее для построения MemoryStream
:
MemoryStream stream = new MemoryStream(bytes.Take(bytesRead).ToArray());
Стоит отметить, что вы 'Мы имеем дело с Stream
, что означает, что вы не можете получить все свои данные за один раз.
То есть, если я отправлю «ABC» и «DEF» как два отдельных сообщения, я смогу получитьэто может быть любым количеством способов (некоторые примеры ниже):
- ABCDEF (1 событие «receive»)
- ABC, DEF (2 события «receive»)
- A, BCDE, F (3 события "приема")
- ABCDE, F (2 события "приема")
- A, B, C, D, E, F (6 "получение)«events».
Обычно люди сначала отправляют индикатор размера, считывают его, а затем используют его, чтобы определить, когда было получено их полное «сообщение».