[英]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.