При вашем ReceivingData
обратном вызове вы можете не получить все данные обратно в одном щелчке.Некоторые данные могут быть получены частично, а остальные - в последующих (или множественных) обратных вызовах, и ваша задача будет собрать оригинальное сообщение.
Вам потребуется определить протокол, чтобы убедиться, что вы прочитали все необходимые данные.Например, вы можете использовать base64 для кодирования изображения на сервере и декодирования его на клиенте.Вам нужно знать, сколько байтов вы должны ожидать.Это можно сделать, либо добавив в ответ префикс к общему количеству байтов, которые должен ожидать клиент, либо с помощью специального маркера (например, значение байта 0x00) для различения границ сообщения.
Использование Base64 также будет иметь эффектувеличение размера файла на 33%, поскольку base64 в основном кодирует каждые 6 бит входящего потока в 8-битный читаемый символ.Таким образом, для каждых 3 «реальных» байтов, которые вы хотите передать, вам потребуется 4 закодированных байта.