2016-05-03 2 views
0

Я создал клиент и сервер, которые правильно обмениваются данными, но у меня возникла проблема с реализацией функции таймаута. Если я не получаю никакого ввода от клиента в течение 5 секунд, я должен уведомить клиента. Как решить эту проблему, чтобы ожидание запроса совпало с остальной частью программы?TCP-сервер/клиент с таймаутом

BufferedReader inFromClient = new BufferedReader( 
      new InputStreamReader(connectionSocket.getInputStream())); 
... 
String clientMove = inFromClient.readLine(); 
//this is where I wait 5 seconds of a response 

Заранее благодарен!

ответ

0

Использовать Socket.setSoTimeout() и уловить SocketTimeoutException, но почему сообщение клиенту? Что клиент должен делать с незапрашиваемым таймаутом? Будет ли это действительно слушать это? Или он будет занят отправкой сообщения, которое предполагается отправить?

+0

Im не должен закрывать клиента, им просто необходимо обнаружить отсутствие активности. Наверное, мне не нужно уведомлять клиента, но мне все равно нужно продолжить соединение. – user287474

+0

Я ничего не говорил о закрытии клиента. – EJP

+0

Извините, закрыв сокет @EJP – user287474