У меня есть код синхронного чтения данных из потока. В бесконечном цикле идет прослушка:
while (alive_tcp)
{
byte[] messageLenBytes = ReceiveSync(4); // получили длину
int messageLen = BitConverter.ToInt32(messageLenBytes, 0); // сконвертировали в число
byte[] buffer = ReceiveSync(messageLen); // получили полное сообщение
StringBuilder builder = new StringBuilder();
builder.Append(Encoding.Unicode.GetString(buffer, 0, buffer.Length));
string message = builder.ToString();
}
Метод ReceiveSync
:
private byte[] ReceiveSync(int nBytesExact)
{
byte[] buf = new byte[nBytesExact];
int readpos = 0;
while (readpos < nBytesExact)
{
try
{
int actuallyRead = stream.Read(buf, readpos, nBytesExact - readpos);
if (actuallyRead == 0)
throw new System.IO.EndOfStreamException();
readpos += actuallyRead;
}
catch
return buf;
}
}
Хочу сделать чтение асинхронным с помощью BeginRead
, но никак не пойму как получить результат чтения отталкиваясь от моего кода. Нужен ли бесконечный цикл вообще?
Знаю что BeginRead
устарел, но пишу под netframework 4.0. Может посоветуете другую реализацию.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Задача: начиная с 27 уровня, каждый 5 раз, выводить некую реализацию, как такое реализовать ?
Имеется конвертер, который принимает некоторый объект и проанализировав его свойства возвращает объект VisiabilityОднако обновление должно...
Всем приветЕсть элемент класса Polygon, у него есть 4 точки, две из которых необходимо анимированно переместить
Есть сервер на шаблоне web API (asp) (файл конфигурации json)Мне необходимо загрузить файл в формате xml на сервер и прочитать данные из него