非ブロッキングソケットでサーバーに接続しようとすると(select()をタイムアウトパラメーターで使用できるように)、iptablesによってブロックされているポートに接続すると、-j REJECTでselect()が待機することに気付きましたタイムアウトパラメータまでですが、最大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) {...}
上記の例では、接続が localhost:1234 に行き、ポートが上記のようにブロックされている場合、select() は 3 秒までブロックします。
「接続が拒否されました」を取得するために、この 3 秒のタイムアウトが発生する理由を知っている人はいますか? どうすれば微調整できますか (0.02ms 後に ICMP ポートに到達できなくなったため)?