Portál AbcLinuxu, 10. května 2025 05:27

Dotaz: Casovy limit u Socket()

31.7.2009 14:05 Debianer
Casovy limit u Socket()
Přečteno: 131×
Odpovědět | Admin

Dobry den, delam program (J2SE) neco na zpusob port scaneru (metodou connect). Zkousim se vytvorenim socketu (Socket socket = new Socket(ip, port);) pripojit, pokud k tomu dojde, prohlasim dany port za otevreny a pokud se vyskytne SocketException, prohlasim dany port na zavreny - naprosto jednoduche.

Na localhostu toto funguje dokonale. Problem je, ze pokud nektery nejaky stroj v internetu (zkousel jsem google), program se proste zasekne. Vsiml jsem si, ze nektere servery maji nastavene, aby vubec nijak neodpovidaly na prichozi spojeni, program tedy na radku "Socket socket = new Socket(ip, port);" stale ceka co se bude dit, jenze ono se nedeje nic.

Proto jsem se chtel zeptat, jestli by nejak neslo nastavit casovy limit, po ktery se bude na dokonceni akce cekat (napr 30 sekund) a po vyprseni prohlasit dany port za zavreny...

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

31.7.2009 14:44 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: Casovy limit u Socket()
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jistě že by šlo nastavit timeout. Viz také dokumentaci k nmapu.
31.7.2009 15:09 Debianer
Rozbalit Rozbalit vše Re: Casovy limit u Socket()

Dekuji moc, ja mel presne tento problem: http://egopoly.com/2007/01/23/how-to-set-connect-time-out-on-java-sockets/

Jo a pochopil jsem dobre, ze filtered (jak to pise nmap) jsou presne tyto porty a u kterych vyprsi time out?

31.7.2009 15:12 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Casovy limit u Socket()
Odpovědět | | Sbalit | Link | Blokovat | Admin
public void connect(SocketAddress endpoint, int timeout) throws IOException

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.