Как тайм-аут чтения на Java Socket? - PullRequest
19 голосов
/ 26 августа 2010

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

Ответы [ 3 ]

23 голосов
/ 26 августа 2010

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

0 голосов
/ 26 января 2016

Если этот сокет был создан с помощью 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 голосов
/ 26 августа 2010

Да, должно быть переопределение Read (), которое принимает значение тайм-аута.Под 'переопределением' я не предлагаю никому писать один, я указываю, что одно из переопределений методов сокета, которые он использует, принимает значение тайм-аута.

...