将listen()backlog设置为0

时间:2011-02-28 17:32:56

标签: c linux sockets listen

在收听套接字时,我最好将积压限制为零,即

listen( socket, 0 );

但是,根据以下帖子listen() ignores the backlog argument?,这不起作用。有什么方法可以可靠地实现0的积压工作吗?

1 个答案:

答案 0 :(得分:3)

您最接近的是一步到listen()accept()close()。这应该提供与积压零相同的整体效果,除了您每次都必须重新创建和绑定套接字。

int accept_one(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
{
    int result;

    result = listen(sockfd, 1);

    if (result >= 0)
        result = accept(sockfd, addr, addrlen);

    close(sockfd);

    return result;
}

我不知道为什么你会想要这个。