tm.tv_sec = timeout;
tm.tv_usec = 0;
setsockopt(*sock,SOL_SOCKET,SO_SNDTIMEO,(void *) &tm,sizeof(struct timeval));
setsockopt(*sock,SOL_SOCKET,SO_RCVTIMEO,(void *) &tm,sizeof(struct timeval));
select を使わないならこっちで。
SO_RCVTIMEO が受信タイムアウト。
SO_SNDTIMEO が送信タイムアウト。
connect には送信タイムアウトが効く。