linux– 丢弃传入的UDP数据包而不读取

linux– 丢弃传入的UDP数据包而不读取,第1张

概述在某些情况下,我想以尽可能少的开销明确地丢弃在套接字上等待的数据包.似乎没有明确的“drop udp buffer”系统调用,但也许我错了?下一个最好的方法可能是将数据包恢复到临时缓冲区并放弃它.我似乎无法接收0字节,因为man说的是recv:当对等体执行了有序关闭时,返回值将为0.所以1在这种情况下是最小的.有没有其他方法来处理这个?以防万一 - 这不是一

在某些情况下,我想以尽可能少的开销明确地丢弃在套接字上等待的数据包.似乎没有明确的“drop udp buffer”系统调用,但也许我错了?

下一个最好的方法可能是将数据包恢复到临时缓冲区并放弃它.我似乎无法接收0字节,因为man说的是recv:当对等体执行了有序关闭时,返回值将为0.所以1在这种情况下是最小的.

有没有其他方法来处理这个?

以防万一 – 这不是一个不成熟的优化.这台服务器唯一要做的就是以特定的方式转发/调度UDP数据包 – 虽然使用len = 1的recv不会杀了我,但我宁愿一次性丢弃整个队列,还有一些更具体的功能(希望如此)降低延迟).

最佳答案

您可以通过将UDP接收缓冲区设置为0来让内核丢弃您的UDP数据包.

int UdpBufSize = 0;socklen_t optlen = sizeof(UdpBufSize);setsockopt(socket,Sol_SOCKET,SO_RCVBUF,&UdpBufSize,optlen);

只要您认为适合接收数据包,就可以将缓冲区设置为例如4096字节.

总结

以上是内存溢出为你收集整理的linux – 丢弃传入的UDP数据包而不读取全部内容,希望文章能够帮你解决linux – 丢弃传入的UDP数据包而不读取所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1050445.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存