Hallo
ich programmiere grade einen Server/Client. Der Client soll eine INFO Nachricht an einen Host/Port schicken, damit man weis ob dort mein Server ist. Der Server schickt im erfolg ein HALLO zurueck, wenn mein Server dort nicht laeuft kommt auch nichts zurueck und ich weis das an dem Host/Port nicht mein Server laeuft.
Nur habe ich ein Problem: Wenn ein einem Host/Port nichts ist, bekommt man ja eine schoene Exception "Connection refused." aber wenn dort zufaellig doch was ist, dann bleibt der Thread bei Socket#Socket(host, port) haengen.
Auch in einem Netzwerk, wenn man einen schlechten Ping hat, bleibt der Thread sehr lange in dem Konstruktor haengen.
Wie kann man da einen Timeout setzen? Ich habe schon versucht in etwa so zu machen:
Aber das klappt nicht, der thread wird nicht beendet.
Wie macht man den das am besten?
Danke fuer Antworten.
ich programmiere grade einen Server/Client. Der Client soll eine INFO Nachricht an einen Host/Port schicken, damit man weis ob dort mein Server ist. Der Server schickt im erfolg ein HALLO zurueck, wenn mein Server dort nicht laeuft kommt auch nichts zurueck und ich weis das an dem Host/Port nicht mein Server laeuft.
Nur habe ich ein Problem: Wenn ein einem Host/Port nichts ist, bekommt man ja eine schoene Exception "Connection refused." aber wenn dort zufaellig doch was ist, dann bleibt der Thread bei Socket#Socket(host, port) haengen.
Auch in einem Netzwerk, wenn man einen schlechten Ping hat, bleibt der Thread sehr lange in dem Konstruktor haengen.
Wie kann man da einen Timeout setzen? Ich habe schon versucht in etwa so zu machen:
Code:
thread = new Thread(new Runnable(){
socket = new Socket(host, port);
}, "socket-test-Thread");
thread.start();
timeout = new Timer();
timeout.schedule(new TimeBlub(){
thread.stop();
}, 5000);
Aber das klappt nicht, der thread wird nicht beendet.
Wie macht man den das am besten?
Danke fuer Antworten.