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