Установка listen () в 0 - PullRequest
       29

Установка listen () в 0

1 голос
/ 28 февраля 2011

При прослушивании через сокет, в идеале я хотел бы ограничить отставание до нуля, т.е.

listen( socket, 0 );

Однако, исходя из следующего поста, listen () игнорирует аргумент backlog? , это не сработает. Есть ли способ надежно достичь отставания 0?

1 Ответ

3 голосов
/ 01 марта 2011

Ближайшее, что вы можете получить - это 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;
}

Хотя я не уверен, зачем вам это нужно.*

...