Функции сокетов высокого уровня

У меня есть типичный сетевой протокол, состоящий из типичного потока сообщений (32-разрядное поле длины + тело переменной длины), и я хочу асинхронно читать сообщения из сокета TCP.

Однако С#, по-видимому, обеспечивает довольно низкий уровень API: мне все равно приходится выделять буферы, отслеживать записанное смещение и длину данных вручную и поддерживать состояние между отдельными вызовами для чтения длины и тела, как в плохие старые дни С.

Есть ли какие-либо функции более высокого уровня, которые я могу попробовать, прежде чем погрузиться в написание утомительного асинхронного кода состояния? (нет сторонних библиотек).

Ответ 1

Ничего встроенного, нет. На самом деле я тоже не могу думать о каких-либо сторонних библиотеках. Я не пробовал, но это происходит потому, что С# 5 может предложить некоторые уровни на уровне языка здесь. Другой вариант - использовать отдельный поток, который читает синхронно, но затем использует поток вместо портов завершения ввода-вывода.