NetworkStreamを介してファイルを転送していますが、ファイルが約5〜10kを超えると、ファイルがデータを見逃したり、大きな空白のギャップが生じたりするようです。
これが私が持っているものです:
private string ReadandSaveFileFromServer(TcpClient clientATF, NetworkStream currentStream, string locationToSave)
{
int fileSize = 0;
string fileName = "";
int bytesRead = 0;
fileName = ReadStringFromServer(clientATF, currentStream);
fileSize = ReadIntFromServer(clientATF, currentStream);
FileStream fs = new FileStream(locationToSave + "\\" + fileName, FileMode.Create);
byte[] fileSent = new byte[fileSize];
while (currentStream.DataAvailable)
{
if (clientATF.Connected)
{
bytesRead = currentStream.Read(fileSent, 0, fileSent.Length);
fs.Write(fileSent, 0, fileSent.Length);
}
else
{
break;
}
}
fs.Flush();
fs.Close();
return fileName;
}