C# TCP 传文件出现粘包问题

kkgg1988 kkgg1988 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
客户端代码:
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,请问有没有什么解决办法?
...全文

相关推荐

评论 18
收藏 已收藏
分享
返回顶部
kkgg1988
C# 111,129 成员 642,540 内容