Данные, о которых идет речь, представляют собой файл PNG с префиксом его размера как целое число.
-Sending:
ns.Write(BitConverter.GetBytes((int)data.Length),0,4);
ns.Write(data, 0, data.Length);
-Reading:
byte[] sizearray = new byte[4];
ns.Read(sizearray, 0, 4);
int dataSize = BitConverter.ToInt32(sizearray,0);
byte[] data = new byte[dataSize];
ns.Read(data, 0, dataSize);
Полученные данные затем сохраняются в файл. Я также пробовал это с BeginRead / EndRead с тем же результатом.
Проблема в том, что, хотя это работает для большинства изображений меньшего размера, оно не получает изображение размером более нескольких КБ. DataSize читает правильно, но после нескольких тысяч байтов каждый раз (~ 2900), остальные полученные данные равны 0. Пример
Я что-то упустил, например ограничение на количество отправляемых за один раз?