it-swarm.com.ru

Как тайм-аут чтения на Java Socket?

Я пытаюсь читать элементы из сокета и замечаю, что если в потоке сокета ничего нет, он останется в режиме чтения и создаст резервную копию моего приложения. Я хотел знать, есть ли способ установить тайм-аут чтения или разорвать соединение после определенного промежутка времени в сокете.

18
Masterban

Если вы пишете на Java, то научитесь ориентироваться документация по API полезно. В случае чтения сокета, вы можете установить опцию тайм-аута.

23
erickson

Если этот сокет был создан с помощью URLConnection для выполнения веб-запроса, вы можете установить таймауты чтения и подключения непосредственно на URLConnection перед чтением потока:

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.