如何在C#中确定UDP套接字缓冲区大小?

如何在C#中确定UDP套接字缓冲区大小?,c#,udp,buffer,C#,Udp,Buffer,我将连续发送长达5分钟的UDP数据包(1500字节)的ECG数据。什么是安全的套接字。我可以使用ReceiveBufferSize?我将过滤这些数据,并在数据进入时绘制数据。我想防止任何缓冲区问题 如果要防止任何问题,需要使用TCP。 在使用udp的情况下,可能会丢失数据或获得错误的数据包序列 int packetSize = 1500; // as stated in the question int safeBufferSize = maxPacketsPerSec * packetSize

我将连续发送长达5分钟的UDP数据包(1500字节)的ECG数据。什么是安全的
套接字。我可以使用ReceiveBufferSize
?我将过滤这些数据,并在数据进入时绘制数据。我想防止任何缓冲区问题

如果要防止任何问题,需要使用TCP。 在使用udp的情况下,可能会丢失数据或获得错误的数据包序列

int packetSize = 1500; // as stated in the question
int safeBufferSize = maxPacketsPerSec * packetSize * howManySecondsToBuffer;
计算或估计
maxPacketsPerSec
的值,为
howManySecondsToBuffer
选择一个安全/慷慨的值,范围在5(至少能经受住最坏的垃圾收集暂停)到60(如果你完全偏执,甚至是整整300秒)之间,然后进行计算


但更重要的是:尽可能快地将字节从套接字接收缓冲区中取出,将它们交给其他线程或多个线程(如果需要)处理的队列。这样,你的应用内队列将缓冲尽可能多的RAM,而你的
套接字。ReceiveBufferSize
值将变得不那么重要。

但这取决于他需要做什么,他可能不需要tcp作为他的用例。实际上,他“想要防止任何缓冲区问题”。所以这是我对这个问题的主观理解。当然,他可以使用udp、添加数据包编号、控制和检查以及数据包重新发送。如果sombody对“缓冲区问题”有另一种看法,请让我知道,而不是投反对票。