struct timeval tv;
tv.tv_sec=0;
tv.tv_usec=500000;
if(setsockopt(sock,SOL_SOCKET,SO_RCVTIMEO,&tv, sizeof(tv)))
{ 
 "все плохо". 
Дальше, по каждому чиху, если что-то не так, сразу делаю
retval = recv(sock,&req,sizeof(req),0);
		if(retval != sizeof(req))
		{
			close(sock);
			fprintf(stderr,"Goodbye from client retval");
			pthread_exit( NULL );
		}

