我正在學習現在的計算機網絡。現在我知道TCP和UDP之間的一個很大的區別在於UDP在通信時可能會丟失數據包。我想知道C#如何應對這種失落。例如,一臺主機將"ABCD\n"
字符串發送給另一臺主機。如果有丟包,接收主機是否丟棄exception
或者只有"AB\n"
? (另外),我想知道一些強制udpclient丟失數據包的方法。然後我可以做實驗。如果udpclient在C#中丟失了數據包會發生什麼?
0
A
回答
2
C#不在乎少 - 事實上它甚至不知道數據包丟失了。你的代碼/邏輯可能會或可能沒有與丟失的數據包有關的問題。這完全取決於您編寫的邏輯,並且與底層編程語言/運行時系統無關。
我也想你得太多/過於複雜的:丟失一個包===不發送一個...
1
你應該自己(與語言無關)
例如實現CRC機制:
host1想發送給host2一個udp數據報。
- host1計算數據包crc,然後將數據包發送到host2。
- 當host2收到數據包時,應計算數據包crc,然後用該值回覆host1。
- host1比較兩個crc值,如果匹配,則數據包發送正確併到達主機2。如果不是host1則必須重新發送數據包。
這裏有一個C#CRC類的例子:
public static class Crc16
{
const ushort polynomial = 0xA001;
static readonly ushort[] table = new ushort[256];
public static ushort ComputeChecksum(byte[] bytes)
{
ushort crc = 0;
for (int i = 0; i < bytes.Length; ++i)
{
byte index = (byte)(crc^bytes[i]);
crc = (ushort)((crc >> 8)^table[index]);
}
return crc;
}
static Crc16()
{
ushort value;
ushort temp;
for (ushort i = 0; i < table.Length; ++i)
{
value = 0;
temp = i;
for (byte j = 0; j < 8; ++j)
{
if (((value^temp) & 0x0001) != 0)
{
value = (ushort)((value >> 1)^polynomial);
}
else
{
value >>= 1;
}
temp >>= 1;
}
table[i] = value;
}
}
}
相關問題
- 1. 會話丟失時,asp.net 2.0中發生了什麼?
- 2. 如果證書被丟棄,加密數據會發生什麼?
- 3. 如果php.ini丟失,會發生什麼情況?
- 4. 如果TCP RST丟失會發生什麼?
- 5. MS SQL Server 2005:如果LDF文件丟失會發生什麼?
- 6. 如果第一個「FIN」數據包在TCP連接中丟失會發生什麼?
- 7. 爲什麼會話中丟失數據?
- 8. 如果服務器終止,TCP數據包會發生什麼?
- 9. 在慢啓動階段發生數據包丟失時,TCP擁塞窗口會發生什麼?
- 10. JavaScript PubSub模式:「this」的情況發生了什麼,它爲什麼會丟失?
- 11. 爲什麼EF在執行「from」時會丟失包含數據
- 12. HttpWebResponse爲什麼會丟失數據?
- 13. C#TcpClient丟失數據包
- 14. 使用Network Link Conditioner測試100%數據包丟失的可達性:幫助我瞭解發生了什麼
- 15. CookieContainer數據丟失了,爲什麼? [C#,Web表單]
- 16. 如果shared_ptr的構造函數失敗會發生什麼?
- 17. 如果事務複製期間連接丟失會發生什麼?
- 18. Tensorflow Dropout:如果我應用兩個丟失圖層會發生什麼?
- 19. 如果HttpClient.execute()中斷會發生什麼?
- 20. 在C++中聲明爲const的數據時發生了什麼
- 21. 如果您丟失了Internet連接,在服務器上運行的命令會發生什麼情況?
- 22. 在jQuery的clone()中丟失了什麼?
- 23. 爲什麼我會從memcached中丟失會話數據?
- 24. UDPClient異步回調期間傳入消息會發生什麼?
- 25. 爲什麼我的會話在MVC4中突然丟失數據?
- 26. 如果解析雲數據服務失敗,會發生什麼情況?
- 27. 當已經建立了TCP連接時,如果我向服務器發送SYN數據包會發生什麼?
- 28. 爲什麼我在頁面更改中丟失了會話?
- 29. 當網絡連接丟失時,MSMQ會發生什麼
- 30. NAT映射丟失時會發生什麼
這是不完全正確,C#是在一個數據包 –