.NET 8中如何提升SharpPcap的UDP请求发送速度?
问题
我无法将UDP请求间的延迟降至50微秒以下(要求为10微秒)。尝试了多预热线程等优化手段但无效(似乎底层存在某种锁机制)。请求通过以太网发送,是否有其他配置或方法可降低延迟?
当前使用的代码片段:
_device.OnPacketArrival += ProcessPacketArrival; _device.Open(DeviceModes.MaxResponsiveness | DeviceModes.NoCaptureLocal, -1); _device.NonBlockingMode = true; _device.StartCapture(); //delay between requests 50+ microseconds _device.SendPacket(_cachedBytes.AsSpan()); _device.SendPacket(_cachedBytes.AsSpan());
已尝试方案
- 多种设备配置调整
- 多线程优化(含预热线程)
期望目标
UDP请求间延迟不超过10微秒
解决方案
使用SharpPcap中的SendQueue类实现低延迟发包:
- 初始化
SendQueue时指定合适的队列大小 - 通过
SendQueue.Add方法将需要发送的数据包批量加入队列 - 调用
_sendQueue.Transmit()完成批量发送
实际效果:请求间延迟约为5微秒,两次批量发送(Transmit调用)之间的间隔为24毫秒。
内容的提问来源于stack exchange,提问作者Im Here
相关产品推荐
相关产品推荐

