Не до конца передаётся файл через NetworkStream

Я передаю большой файл по TCP. В начале я делаю подключение через TcpClient и TcpListener, потом получаю NetworkStream. На одной стороне открываю файл через File.OpenRead и отправляю через CopyTo

Код сервера

var fileInfo = new FileInfo(Program.File);
var len = (int)fileInfo.Length;
var byted = BitConverter.GetBytes(len);
ns.Write(byted, 0, 4);
var file = File.OpenRead(Program.File);

file.CopyTo(ns);
file.Close();
file.Dispose();

на клиенте я просто создаю файл и CopyTo уже в файл

TcpClient tcp = new TcpClient();
tcp.Connect("myip", 900);
var server = tcp.GetStream();
var lenBuffer = new byte[4];
server.ReadExactly(lenBuffer, 0, 4);
fileLength = BitConverter.ToInt32(lenBuffer);   
file = File.Create("path\\to\\save.rar");
server.CopyTo(file);
file.Close();
file.Dispose();

и я еще на клиенте параллельно мониторю прогресс загрузки через file!.Position. Так вот, иногда при таком автоматическом способе передачи доходит не целиком, при том что на сервере программа завершается. Почему так происходит и как решить эту проблему?


Ответы (0 шт):