C# TCP 传文件出现粘包问题
客户端代码:
IAsyncResult ir = null;
IAsyncResult br = null;
while (true)
{
ir = fs1.BeginRead(buffer, 0, buffer.Length, null, null);
avSize = fs1.EndRead(ir);
br = n.BeginWrite(buffer, 0, avSize,null, null);
n.Flush();
n.EndWrite(br);
// Thread.Sleep(1); /////////////////////////// 1
userControl11.progressBar1.Value += avSize;
int liang = userControl11.progressBar1.Value / 1024;
userControl11.label4.Text = liang + " KB";
if (avSize != buffer.Length)
break;
}
服务端代码:
int avSize = 0;
byte[] buffer = new byte[bufferSize];
FileStream fs = new FileStream(filePath, FileMode.Append);//FileMode.OpenOrCreate | FileMode.Append
fs.Position = offset;//设置断点续传位置
stream.Flush();
while ((avSize = stream.Read(buffer, 0, bufferSize)) > -1)
{
fs.Write(buffer, 0, avSize);
fs.Flush();
if (avSize != bufferSize)
break;
}
客户端和服务端同时在本机测试的时候正常。因为没有流量限制。
在局域网下同一个网段时,传小文件没有问题(1m以下),稍大点的文件就会出现传过去的文件比实际的小很多。结果打不开。当我在上面代码位置1处,取消注释。就可以了,但是速度非常慢,局域网下都只有60k/s,请问有没有什么解决办法?