Я пытаюсь написать простой SNPP (Simple Network Paging Protocol) клиент, используя сокеты. Кажется, что все работает хорошо, за исключением небольшой несогласованности между серверами.Получение chunked данных из Socket в один буфер
Когда я отправляю команду, мне нужно прочитать ответ, который обычно представляет собой единый фрагмент данных. Однако сервер SNPP Sprint отправляет ответы в две части. Первый фрагмент данных - это первая цифра кода состояния. Второй кусок - это остаток. Например, при попытке получить «220 шлюз готов» ответить, он поступает так:
2
Я должен послать другую пустую команду, чтобы получить остаток:
20 Gateway ready
На данный момент я использую:
byte[] buffer = new byte[256];
socket.Receive(buffer);
Как я могу убедиться, что я получаю все имеющиеся данные после выдачи команды без выделения отдельного буфера для каждого блока данных?
Мне нравится это решение, потому что оно обрабатывает куски всех размеров. Однако после получения первого ответа приложение перестает отвечать, пока не появятся новые данные. Отладчик показывает, что он зависает при условии while. –