我有一个 UdpClient 坐在端口上。我用它来发送数据。
99% 的时间我都不关心任何传入的数据包。但是,在极少数情况下,我需要监听我发送的一个数据包的响应。
我的第一个想法是在发送后直接调用 UdpClient.Recieve(),并循环遍历所有数据包,直到找到我的回复。
但是,我想知道接收缓冲区在 UdpClient 中是如何工作的。由于我没有正常处理任何接收到的数据包,我假设它必须缓冲它们,然后在缓冲区达到一定大小时将它们丢弃。我担心这种丢弃可能发生在我的回复到达网络之后,但在我的 Recieve() 调用执行之前。
我能想到的唯一解决方案是持续异步处理所有接收到的数据包,但对于这种简单的情况,这似乎有点过分了。
有谁知道 UdpClient 的缓冲行为?(例如,它会丢弃整个缓冲区,还是只丢弃最旧的数据或什么?)。MSDN 没有提供我能找到的细节。