开发者

Setting listen() backlog to 0

When listening on a socket, I would ideally like to limit the backlog to zero, i.e.

listen( s开发者_如何学编程ocket, 0 );

However, based on the following post, listen() ignores the backlog argument?, this wouldn't work. Is there any way I can reliably achieve a backlog of 0?


The closest you can get is to listen(), accept() and close() in one step. This should provide the same overall effect as a backlog of zero, except that you must re-create and bind the socket each time.

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;
}

I am not sure why you would want this, though.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜