如果需要查看更多文章,請微信搜索公眾號 csharp編程大全,需要進C#交流群群請加微信z438679770,備注進群, 我邀請你進群! ! !

一、UDP 協議 C# UdpClient亂序接收資料包丟失的問題 Socket ReceiveBufferSize
利用UdpClient收發檔案,走Udp協議,發送端只管發送資料包,接收端負責接收資料,測驗中發現,按每塊1298位元組發送資料包時,接收端在接收共8塊時出現了部分資料包的丟失,分析可能是資料突然集中到達超出Socket接識訓沖區大小,造成資料覆寫丟失,因為默認Socket緩沖區大小為8192位元組,每塊資料1298位元組再加上我在實驗程式中自定義的資料包頭資訊,每塊資料大小在1472位元組,8塊共計11776位元組,遠超出了8192,會造成資料丟失,接收端在亂序接收檔案程序中,對突然集中到達的資料包處理不及時,造成緩沖區大小不夠存盤這些資料包,發生資料包的丟失,因而【如果要傳送大檔案,或在使用高帶寬或高滯后時間連接(如衛星寬帶提供程式),請考慮增加緩沖區的大小】,針對UdpClient,我們需要用到Socket 的ReceiveBufferSize 屬性,添加如下代碼:
UdpClient uc = new UdpClient(7376);//創建一個UdpClient實體,監聽系結了埠7376的介面
uc.Client.ReceiveBufferSize = 1024 * 1024;//這里大小(以位元組為單位)根據需要修改,默認值是8192
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/227009.html
標籤:.NET技术
上一篇:.Net Core 3.x Api開發筆記 -- 讀取組態檔資訊(四)
下一篇:C# 代碼分兩個表單撰寫
