gpt4 book ai didi

c - SO_RCVBUF 的最小值是多少?

转载 作者:太空狗 更新时间:2023-10-29 15:04:56 25 4
gpt4 key购买 nike

为了最小化延迟(我不关心数据包丢失),我想要尽可能小的 UDP 接收缓冲区。但是,当我将 SO_RCVBUF 设置为低于 1000(使用 setsockopt)时,我的程序从未收到任何数据包。我发送的数据报有 28 个字节的数据,总的在线数据包大小为 70 个字节,那么如果 SO_RCVBUF < 1000,为什么我收不到任何东西?我该如何更改它以允许更小的缓冲区大小?

此外,是否可以根据数据包数量而不是字节数来设置缓冲区?或者有什么方法可以手动清空它?

最佳答案

缩小套接字接收缓冲区不会减少延迟。

相反,您每次都需要将所有可用数据包从队列中取出。这可以通过非阻塞套接字和边缘触发来实现 epollkqueue - 读取“可读”事件,直到获得 EWOULDBLOCK

至于为什么您没有得到任何具有小 SO_RCVBUF 值的输入,请看这里 - http://vger.kernel.org/~davem/skb_sk.html ,这里 - http://lxr.linux.no/#linux+v2.6.37/include/net/sock.h#L621

希望这对您有所帮助。

关于c - SO_RCVBUF 的最小值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4970977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com