Я создаю сервер сокетов, который должен постоянно прослушивать входящие сообщения от подключенных клиентов.Эти сообщения будут отправлены в массиве byte [].У меня был сервер, отлично работающий с StreamReader, но StreamReader работает только с текстовыми представлениями отправляемых данных ... но не с байтами [].
Вот что у меня было:
StreamReader reader = new StreamReader(Client.GetStream());
string line = "";
while (true)
{
line = reader.ReadLine();
if (!string.IsNullOrEmpty(line))
{
parentForm.ApplyText(line + "\r\n");
SocketServer.SendBroadcast(line);
}
}
Теперь мне нужно каким-то образом преобразовать это в необработанный поток, который преобразует содержимое потока в массив byte [], но я не могу понять, как это сделать.
Я пробовал это:
while (true)
{
var bytes = default(byte[]);
using (var memstream = new MemoryStream())
{
var buffer = new byte[512];
var bytesRead = default(int);
while ((bytesRead = reader.BaseStream.Read(buffer, 0, buffer.Length)) > 0)
memstream.Write(buffer, 0, bytesRead);
bytes = memstream.ToArray();
}
//parentForm.ApplyText(bytes.Length + "\r\n");
}
но, как вы можете догадаться, цикл while (true) не совсем работает так, как мне нужно.Может кто-нибудь помочь мне с некоторой корректировкой кода, чтобы сделать эту работу, как мне нужно.Он должен постоянно прослушивать входящие сообщения, затем, когда сообщение получено, ему нужно что-то делать с этим сообщением (массив byte []), а затем снова вернуться к прослушиванию.
TIA