>>944
connect(2)のEINPROGRESSの説明をよく読め。

EINPROGRESS
ソケットが非停止 (non-blocking) に設定されていて、接続をすぐに完了することができない。
  その場合、 select(2) や poll(2) を使ってそのソケットが書き込み可能になるのを待つことで、
  接続の完了を知ることができる。 select(2) で書き込み可能になった後に、 getsockopt(2) を
  使って SOL_SOCKET レベルで SO_ERROR オプションを読み出すことにより、 connect() が
  成功したか、失敗したかを判断できる。成功の場合 SO_ERROR が 0 であり、失敗の場合
  SO_ERROR がここのリストにあるいずれかのエラーコードであり、それにより失敗の原因が
  分かる。