由于 UDP 是一种无连接协议,因此我们知道无法保证接收方会接收到数据。但是如果收到数据报,数据是否可能部分/完全损坏?
UDP标头也包含CRC,所以这让我觉得如果收到数据报,数据会可靠吗?这是正确的还是不正确的?
为了更详细地说明问题,我从 Java udp 服务器发送数据,例如
// Sending in Java
InetAddress group = InetAddress.getByName("230.0.0.1");
//buf is a String.getBytes();
DatagramPacket packet = new DatagramPacket(buf, buf.length, group, 4446);
//socket is DatagramSocket in Java
socket.send(packet);
并像这样在 C# 客户端中获取数据
// client is UdpClient of C#
Byte[] data = client.Receive(ref localEp);
strData = Encoding.ASCII.GetString(data);
我自己不是在操作 CRC,在接收器端我得到了在 buf 中发送的相同数据,所以我如何在这里检查 CRC,因为我有一个字节数据数组..?或假设它是正确的(我可以忍受那些 CRC 匹配的极端情况,即 CRC 和数据被神奇地损坏)