Сокету не важно, отправляете ли вы текстовые или двоичные данные. Или сколько вы отправляете. Если есть какие-либо проблемы, то это на принимающей стороне, код, который вы не опубликовали. Классическая ошибка - забыть, что NetworkStream - это поток , а не последовательность пакетов. Вызов Read () на принимающей стороне может вернуть любое количество байтов. Это не будет количество байтов, которое вы записали в вызове Write (), в зависимости от того, как маршрутизаторы между двумя машинами разбили IP-пакеты и сколько данных буферизировалось в приемнике. Вы, вероятно, сойдете с вызовом Read only один раз, потому что строка короткая. Это определенно не сработает, когда вы отправляете много данных.
Вам нужен протокол, чтобы помочь получателю выяснить, когда он получил все данные. Простой способ сделать это - сначала отправить длину данных. Затем получатель может сначала прочитать эту длину, а затем узнать, как долго продолжать вызывать Read (), чтобы получить оставшиеся данные.
Вы можете произвольно расширить этот протокол, скажем, отправив имя файла. Etcetera. Хотя к тому времени, как вы закончите, вы будете близки к переизобретению FTP.