我的问题是,当我通过本地 LAN 网络传输连续的数据流时,有时随机字节会在此过程中丢失。
就像现在一样,代码设置为在局域网上流式传输大约 1027 个字节左右约 40 次,有时(非常罕见)一个或多个字节丢失。
让我感到困惑的是,实际字节并没有“丢失”,它只是设置为 0,而与原始数据无关。(顺便说一下,我正在使用 TCP)
这是发送代码:
public void Send(byte[] data)
{
if (!server)
{
if (CheckConnection(serv))
{
serv.Send(BitConverter.GetBytes(data.Length));
serv.Receive(new byte[1]);
serv.Send(data);
serv.Receive(new byte[1]);
}
}
}
和接收代码:
public byte[] Receive()
{
if (!server)
{
if (CheckConnection(serv))
{
byte[] TMP = new byte[4];
serv.Receive(TMP);
TMP = new byte[BitConverter.ToInt32(TMP, 0)];
serv.Send(new byte[1]);
serv.Receive(TMP);
serv.Send(new byte[1]);
return TMP;
}
else return null;
}
else return null;
}
空字节的发送和接收只是为了使系统保持同步。我个人认为问题出在系统的接收端。虽然无法证明那架喷气式飞机。