我想通过NetworkStream发送文件并在客户端重新构建它。我可以正确地获取数据(我认为),但是当我使用BinaryWriter或FileStream对象来重新创建文件时,无论使用何种方法,文件在一开始都会被切断。使用NetworkStream传输文件然后重建文件失败
private void ReadandSaveFileFromServer(ref TcpClient clientATF,ref NetworkStream currentStream, string locationToSave)
{
int fileSize = 0;
string fileName = "";
fileName = ReadStringFromServer(ref clientATF,ref currentStream);
fileSize = ReadIntFromServer(ref clientATF,ref currentStream);
byte[] fileSent = new byte[fileSize];
if (currentStream.CanRead && clientATF.Connected)
{
currentStream.Read(fileSent, 0, fileSent.Length);
WriteToConsole("Log Recieved");
}
else
{
WriteToConsole("Log Transfer Failed");
}
FileStream fileToCreate = new FileStream(locationToSave + "\\" + fileName, FileMode.Create);
fileToCreate.Seek(0, SeekOrigin.Begin);
fileToCreate.Write(fileSent, 0, fileSent.Length);
fileToCreate.Close();
//binWriter = new BinaryWriter(File.Open(locationToSave + "\\" + fileName, FileMode.Create));
//binWriter.Write(fileSent);
//binWriter.Close();
}
当我逐步检查fileName和fileSize时,它们是正确的。字节[]也完全填充。关于我接下来可以做什么的任何线索?
在此先感谢...
肖恩
编辑!!!:
所以我想通了,发生了什么事。当我读取一个字符串,然后从流中读取Int时,字节数组长度为256个索引。所以我对字符串的读取正在接受整数,然后会打断其他区域。需要弄清楚...
如果您需要进一步的帮助,您需要发布您的ReadStringFromServer和ReadIntFromServer方法。 – 2010-09-20 19:25:44