【发布时间】:2010-09-20 15:51:13
【问题描述】:
我正在尝试通过 NetworkStream 发送文件并在客户端重建它。我可以正确地获取数据(我认为),但是当我使用 BinaryWriter 或 FileStream 对象重新创建文件时,无论我使用什么方法,文件都会在同一点开始被切断。
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();
}
当我逐步检查文件名和文件大小时,它们是正确的。 byte[] 也被完全填充。关于下一步我可以做什么的任何线索?
提前谢谢...
肖恩
编辑!!!:
所以我弄清楚发生了什么。当我读取一个字符串然后从流中读取 Int 时,字节数组的长度为 256 个索引。所以我对字符串的读取正在接受 int,然后它将破坏其他区域。需要解决这个问题...
【问题讨论】:
-
如果您需要进一步的帮助,您需要发布您的 ReadStringFromServer 和 ReadIntFromServer 方法。
标签: c# .net tcpclient networkstream