Как Вы читаете поступление tcp поток, пока определенный разделитель не найден в C#? Единственное возможное решение, которое я предложил, читает входящий поток один байт за один раз.
Чтение сокета TCP и поиск разделителя - это разные вещи.
Вы можете прочитать все доступные данные на неблокирующем сокете в байтовый массив / строку, а затем просканировать байтовый массив в поисках разделителя. Делайте все, что вам нужно, включая, возможно, сохранение данных после разделителя для следующей попытки чтения.
Лучше всего использовать какой-то буфер для добавления входящих данных, чтобы операции с сокетами не определяли точную обработку данных.