Как я вижу, вы добавили сюда несколько методов, которые вы создали самостоятельно, и я полагаю, у вас нет проблем с чтением данных.Что вам действительно нужно, так это какой-то дескриптор при запуске нового файла, потому что ваш сокет должен непрерывно получать данные.
Очевидно, это зависит от того, какой формат изображения вы хотите использовать, что вы хотите отправить.Для файлов PNG вы должны прочитать главу 12 этого pdf файла.Особенно раздел 12. Вы можете искать сигнатуру и извлекать данные из буфера, если вы нажмете последовательность вроде этой
(decimal) 137 80 78 71 13 10 26 10
(hexadecimal) 89 50 4e 47 0d 0a 1a 0a
(ASCII C notation) \211 P N G \r \n \032 \n
Тогда вам нужно просто воссоздать файл png.Вы должны делать то же самое с каждым типом файла, который вы отправляете.
Если вы не заботитесь о содержимом файла, вы могли бы создать некоторый фрейм данных и поместить данные в полезную нагрузку (сжатые и зашифрованные).Создать собственную подпись, бла-бла-блах.Простейший пример - Modbus.Подробнее об этом можно прочитать здесь .
edit
Чтение данных из tcp stream очень просто.Просто посмотрите на этот код.
var receiveBufferSize = 512; // amount of bytes to read
try
{
var buffer = new byte[receiveBufferSize];
_tcpClient.GetStream().Read(buffer, 0, receiveBufferSize);
// handle the received data chunk
}
catch (Exception e)
{
// handle the error
Debug.WriteLine(ex.Message);
}