Нужно ли пытаться подключиться ко всем адресам, возвращаемым функцией getaddrinfo ()?

Простой клиент Биджа Пример кода перебирает все IP-адреса, возвращаемые из getaddrinfo (), пока он не сможет подключиться к первому. Смотрите код ниже.

Всегда ли это необходимо, или можно предположить, что нам нужно только попытаться подключиться к первому адресу, возвращенному функцией getaddrinfo ()?

memset(&hints, 0, sizeof hints);
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;

if ((rv = getaddrinfo(argv[1], PORT, &hints, &servinfo)) != 0) {
    fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(rv));
    return 1;
}

// ------------------------------------------------------------
// loop through all the results and connect to the first we can
for(p = servinfo; p != NULL; p = p->ai_next) {
    if ((sockfd = socket(p->ai_family, p->ai_socktype,
            p->ai_protocol)) == -1) {
        perror("client: socket");
        continue;
    }

    if (connect(sockfd, p->ai_addr, p->ai_addrlen) == -1) {
        close(sockfd);
        perror("client: connect");
        continue;
    }

    break;
}

Ответы на вопрос(5)

Ваш ответ на вопрос