web-dev-qa-db-fra.com

Comment temporiser une lecture sur Java Socket?

J'essaie de lire des éléments d'un socket et je remarque que s'il n'y a rien dans le flux du socket, il restera à la lecture et sauvegardera mon application. Je voulais savoir s'il existait un moyen de définir un délai de lecture ou de mettre fin à la connexion après un certain laps de temps sans rien dans la prise.

18
Masterban

Si vous écrivez en Java, apprendre à naviguer dans la documentation de l'API est utile. Dans le cas d'une lecture de socket, vous pouvez définir l'option de délai d'attente.

23
erickson

Si cette socket a été créée via une URLConnection pour exécuter une requête Web, vous pouvez définir les délais de lecture et de connexion directement sur la URLConnection avant de lire le flux:

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.