net.unix.max_dgram_qlen问题

时间:2011-02-15 17:21:03

标签: linux sockets network-programming

根据内核文档net.unix.max_dgram_qlen,sysctl控制数据报套接字接收队列的最大长度(对于AF_UNIX / AF_LOCAL套接字)。在发送到该接收器的呼叫开始阻塞之前,我总是可以发送超过此值的1。谁知道为什么?

此外,是否有人知道这是否曾作为套接字选项实现。 (有点像SO_SNDBUF对应于wmem_default和wmem_max)。这thread提到了这种可能性,但我无法找到任何人做过的地方。

1 个答案:

答案 0 :(得分:0)

1.,这是如何检查:

static inline int unix_recvq_full(struct sock const *sk)                                        
{
    return skb_queue_len(&sk->sk_receive_queue) > sk->sk_max_ack_backlog;
}

这就是为什么你可以再创建一个连接而不是你设置的值。

2.,传递给 listen()的待办事项参数也用作 max_ack_backlog 。但是,没有其他方法可以影响它。