110,546
社区成员
发帖
与我相关
我的任务
分享
private void Receive()
{
byte[] buff = new byte[8 * 1024];
byte[] dataSave = new byte[1 * 1024 * 1024];
int count = 0;
string path = frm.path+"\\"+ "789.txt";
while (true)
{
if (flag)
{
Array.Clear(buff, 0, buff.Length);
int recv = SockClient.ReceiveFrom(buff, ref IP);
if (count + recv < dataSave.Length)
Array.Copy(buff, 0, dataSave, count, recv);
else
{
Array.Copy(buff, 0, dataSave, count, dataSave.Length - count);
break;
}
count += recv;
}
else //阻塞当前线程
{
wh.WaitOne();
}
}
write2Disk(dataSave, path);
}
请问出现丢包的问题是我接收端程序的问题吗,应该怎样修改才能不丢包。public void AsynReceive()
{
NetworkStream stream = tcp.GetStream();
Array.Clear(buff, 0, buff.Length);
stream.BeginRead(buff, 0, buff.Length, asyncResult =>
{
int len = stream.EndRead(asyncResult);
if (count + len < dataSave.Length)
{
Array.Copy(buff, 0, dataSave, count, len);
count += len;
AsynReceive();
}
else
{
tcp.Close();
write2Disk(dataSave, path);
return;
}
}, stream);
}