skus spravit taku vec, pridaj si nejaku logicku premennu nastav ju na true, a tam kde odchytavas vynimku SocketTimeoutException nastav tuto hodnotu na false... a teraz ByteArrayInputStream inputStream, potom tam kde citas ten objekt daj do if(premenna ==true) az po to kde testujes ci je to objekt daneho typu... to kde testujes uz nedavaj do toho ifu, ale pridaj tam toto if(prijatyObjekt instanceof IHostInfoMessage && packetp==true) (cize do ifu pojdeme len vtedy ak bude nejaky paket prijaty a sucastne bude daneho typu).. no a nakoniec za tym testovanim daneho objektu ci je IHostInfoMessage alebo nie pridaj este toto packetp=true;
cize bude to fungovat asi takto ze na zaciatku je ta premenna nastavena na true, ak nastane exception zmeni sa na false a dalej sa uz nic okrem toho ze sa premenna nas5 zmeni na true , a zacne sa robit dalsia iteracia... ak je premenna na true chyba nenastane, tak sa precita objekt potom sa overi ci je daneho typu, a zapise sa to do hash tabulky.
a tym vlastne osetris to aby to nespadlo hned na zaciatku, ale len to vypise tu vynimku a caka na dalsi paket