wake-up-neo.com

Wie kann ich ein Lese-Timeout für Java Socket durchführen?

Ich versuche, Elemente aus einem Socket zu lesen, und bemerke, dass der Stream des Sockets beim Lesen und Sichern meiner Anwendung verbleibt, wenn sich nichts im Socket befindet. Ich wollte wissen, ob es eine Möglichkeit gibt, ein Lesezeitlimit festzulegen oder die Verbindung nach einer bestimmten Zeit zu beenden, wenn sich nichts im Socket befindet.

18
Masterban

Wenn Sie Java schreiben, ist das Erlernen der Navigation in der API-Dokumentation hilfreich. Bei einem Socket-Lesen können Sie die Timeout-Option einstellen.

23
erickson

Wenn dieser Socket über eine URLConnection erstellt wurde, um eine Webanforderung auszuführen, können Sie die Lese- und Verbindungszeitlimits direkt in der URLConnection festlegen, bevor Sie den Stream lesen:

InputStream createInputStreamForUriString(String uriString) throws IOException, URISyntaxException {
    URLConnection in = new URL(uriString).openConnection();
    in.setConnectTimeout(5000);
    in.setReadTimeout(5000);
    in.setAllowUserInteraction(false);
    in.setDoInput(true);
    in.setDoOutput(false);
    return in.getInputStream();
}
0
Arie Z.