簡體   English   中英

如何確定C#中的UDP套接字緩沖區大小?

[英]How to determine UDP socket buffer size in C#?

我將連續5分鍾連續發送UDP包(1500字節)的ECG數據。 我可以使用什么是安全的socket.ReceiveBufferSize 我將過濾此數據並按數據順序繪制它們。我想防止任何緩沖區問題。

int packetSize = 1500; // as stated in the question
int safeBufferSize = maxPacketsPerSec * packetSize * howManySecondsToBuffer;

找出或估計您的maxPacketsPerSec值,為maxPacketsPerSec選擇一個安全/寬泛的值,范圍從5(至少可以howManySecondsToBuffer最壞的垃圾收集暫停)到60(如果您howManySecondsToBuffer 300秒)完全偏執),然后進行數學運算。

但是,更重要的是:盡可能快地將字節從套接字接收緩沖區中移出,將它們移交給某個隊列,該隊列由其他線程或多個線程(如果需要)處理。 這樣,您的應用程序內隊列將緩沖與RAM一樣多的緩沖區,並且Socket.ReceiveBufferSize值將變得不那么重要。

如果要防止任何問題,則需要使用TCP。 如果您使用的是udp,很可能會丟失數據或得到錯誤的數據包序列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM