ちょっと気になったところがあるですが:
selectで待つのはwsetだけでよいとおもいます。
selectのtimeoutですが
selectから戻ってきたときに
残り時間が入っているのか元の値のままか
実装によっていろいろらしいので
毎回timeoutを設定しなおした方がいいそうです。
try回ループするかgettimeofdayで残り時間を算出するかは
気合い次第です。
connectが完了したとselectがいったときに
成功したのか失敗したのかを
getsockopt(SOL_SOCKET,SO_ERROR)で取得した方がいいとおもいます。
ありがちなのがECONNREFUSEDです。
--
鯉江英隆 <hide at example.com>