Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 丢弃传入的UDP数据包而不读取大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

在某些情况下,我想以尽可能少的开销明确地丢弃在套接字上等待的数据包.似乎没有明确的“drop udp buffer”系统调用,但也许我错了? 下一个最好的方法可能是将数据包恢复到临时缓冲区并放弃它.我似乎无法接收0字节,因为man说的是recv:当对等体执行了有序关闭时,返回值将为0.所以1在这种情况下是最小的. 有没有其他方法来处理这个? 以防万一 – 这不是一个不成熟的优化.这台服务器唯一要做
@H_616_13@
在某些情况下,我想以尽可能少的开销明确地丢弃在套接字上等待的数据包.似乎没有明确的“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数据包而不读取所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。