Когда я пытаюсь подключиться к серверу с неблокирующим сокетом (чтобы я мог использовать select () с параметром тайм-аута), я понял, что при подключении к порту, который заблокирован iptables с -j, ОТКЛОНИТЬ select() ожидает до параметра timeout, но не более 3 с ... не имеет значения, что недостижимый пакет порта ICMP действительно быстрый.
fcntl(sockfd, F_SETFL, O_NONBLOCK);
connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr));
if (select(sockfd + 1, NULL, &fdset, NULL, NULL) == 1) {...}
В приведенном выше примере select () блокируется до3 с, если соединение идет к localhost: 1234 и порт заблокирован, как описано выше.
Кто-нибудь знает, почему этот тайм-аут 3 с для получения «соединения отказано»?Как я могу настроить его (потому что я получил ICMP-порт, недоступный после 0,02 мс)?