S tim timeoutem to nebude moc staiblni reseni imho. Socket by mel mit property (nevim jak je to v Jave) .Connected nebo .CanWrite a tu bys mohl testovat. Exception trochu trva nez se vypropaguje nahoru. Nevim jak to tam delas, ale pokud mas treba nejaky buffer zprav, tak bys mel premyslet o protokolu (treba BEGIN{pocet_znaku}zpravaEND a cekat na ACK{bytes_received} a pak teprve posilat dalsi zpravu.