由於UDP是無連接協議,所以我們知道不能保證數據將被接收器接收。但是,如果收到數據報,數據是否可能部分/完全損壞?如果數據集由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和數據都奇蹟般地活腐敗)
我進一步闡述了我的問題,我收到一個字節數組,就像我從java發送它們一樣。我不是自己放任何crc。 BUt我不知道如何檢查給定的字節[] – Ahmed
您不必驗證校驗和。它將在幾個層面上爲您驗證。如果'UdpClient.Receive()'返回一個數據報,你可以假設校驗和與那個數據報內容匹配。 –