gpt4 book ai didi

我可以在 UDP 套接字上将 SO_RCVBUF 设置为 1

转载 作者:行者123 更新时间:2023-11-30 15:52:07 27 4
gpt4 key购买 nike

我有一个系统,当发生某些情况时,单字节消息会通过 UDP 套接字从一个进程发送到另一个进程。在接收端,这个事件发生一次、十几次甚至一百万次并不重要。

我想也许我可以使用setsockopt将SO_RCVBUF设置为1,而不是进行许多无用的recvfrom()调用,我希望这会导致系统简单地忽略除第一条消息之外的所有消息(直到它被读取,从而允许另一条消息) )。然而,谷歌搜索发现了一些证据表明这可能不是 100% 可移植的(看起来有些系统可能会悄悄地强制执行最小大小?)。

所以在我开始尝试这个之前,我想知道是否有人知道这可行的可能性有多大?如果这有什么关系的话,这是在 Red Hat Linux 上的。

最佳答案

在 Linux 上,实际大小绑定(bind)在 SOCK_MIN_RCVBUFsysctl_rmem_max 之间,但对 setsockopt 的调用永远不会失败。请参阅here 。其中包括 struct sk_buff 的开销等。

SOCK_MIN_RCVBUF的值为:

#define SOCK_MIN_RCVBUF (2048 + sizeof(struct sk_buff))

至于你想要做什么:据我所知,如果不读取(或关闭套接字),就无法清除接收缓冲区。

关于我可以在 UDP 套接字上将 SO_RCVBUF 设置为 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14694877/

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