我做了一个发送端和一个接收端,发送端发送数据到接收端,发送的是一个rar文件,文件大小为
8,354,875 字节,占用空间为 (8,355,840 字节),接收端接收到的数据 大小和占用空间都是 8,355,840 字节
,打开这个文件提示为
不可预料的文件压缩末端 ,因为是分断点传输,所以才出现了这个问题,请高手帮忙分析一下是哪里出错了呀?发送端:string FilePath = @"d:\TCP-SOCKET传输.rar";
byte[] byy = new byte[1024];
FileStream fs = new FileStream(FilePath, FileMode.Open);
int ir = 0;
while ((ir = fs.Read(byy, 0, byy.Length)) > 0)
{
ClientSocket.BeginSend(byy, 0, byy.Length, SocketFlags.None, new AsyncCallback(AsynOver), ClientSocket);
}
fs.Close();
MessageBox.Show("ok");
接收端:public void Length(byte[] RByte) //这个RByte是委托传过来的值,长度是1024
{ ff = new FileStream(@"d:\abcdefg.rar", FileMode.Append);
ff.Write(RByte, 0, RByte.Length);
// ff.Flush();
ff.Close();
}
8,354,875 字节,占用空间为 (8,355,840 字节),接收端接收到的数据 大小和占用空间都是 8,355,840 字节
,打开这个文件提示为
不可预料的文件压缩末端 ,因为是分断点传输,所以才出现了这个问题,请高手帮忙分析一下是哪里出错了呀?发送端:string FilePath = @"d:\TCP-SOCKET传输.rar";
byte[] byy = new byte[1024];
FileStream fs = new FileStream(FilePath, FileMode.Open);
int ir = 0;
while ((ir = fs.Read(byy, 0, byy.Length)) > 0)
{
ClientSocket.BeginSend(byy, 0, byy.Length, SocketFlags.None, new AsyncCallback(AsynOver), ClientSocket);
}
fs.Close();
MessageBox.Show("ok");
接收端:public void Length(byte[] RByte) //这个RByte是委托传过来的值,长度是1024
{ ff = new FileStream(@"d:\abcdefg.rar", FileMode.Append);
ff.Write(RByte, 0, RByte.Length);
// ff.Flush();
ff.Close();
}
rar -argument -parament... 通过 DOS 里的command line 去实现,以前我曾用过 winzip 压缩与解压的...并带有密码操作.
异步操作的开始次序是没有规律的,你无法保证传送byy是按照你执行BeginSend的次序进行的。而且就算是按照这个顺序进行的,多个并行的BeginSend它们共用byy,数据也早已经乱了。