Поток данных TPL с TCP NetworkStream - PullRequest
0 голосов
/ 07 января 2020

Может ли TPL Dataflow использоваться для обработки потока байтов TCP? Я довольно новичок в этом топи c и ищу лучший способ обработки потока байтов TCP.

Чтобы быть более точным c: я использую протокол (HSMS) сверху TCP / IP, который определяет сообщения длиной 4 байта и структуру сообщения. Я пишу библиотеку, и у меня есть потребитель, который получает декодированные сообщения. Что мне нужно сделать в моей библиотеке:

  • читать байты из сокета и буферизовать их
  • , как только у меня будет длина байтов и само сообщение, которое мне нужно преобразовать / расшифруйте его.
  • тогда я передам сообщение потребителю библиотеки

Обычно у меня один производитель и один потребитель. А операции ввода-вывода асинхронные.

Я начал делать все вручную, но понял, что это довольно сложно и утомительно, особенно с точки зрения безопасности потоков. Поэтому я наткнулся на поток данных TPL, и мне любопытно, стоит ли его рассматривать в этом случае. Моя главная проблема заключается в том, что у меня есть только один производитель (Socket) и один потребитель, и я удивляюсь, не слишком ли это излишне.

Я также нашел System.IO.Pipelines , но также не так много информации для мой вариант использования.

...