我正在通过 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;
}
最佳答案
不,您写错了缓冲区代码。乍一看,我建议您改用 fs.Write(fileSetn, 0, bytesRead)
。
关于c# - 使用 NetworkStream 错误地传输了较大的文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3919978/