Сокет-клиент, время простоя - PullRequest
2 голосов
/ 10 февраля 2011

Можно ли в любом случае установить тайм-аут для клиентского сокета, если клиент не получает / не отправляет никакого сообщения в определенное время?

вот фрагмент моего кода:

try {
  mainSocket = new ServerSocket(portNumber);
  clientSocket = mainSocket.accept();
  in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
  out = new PrintWriter(clientSocket.getOutputStream(), true);

} catch (IOException ex) {
  Logger.error(this, "failed to accept connection. Error was " + ex.getMessage());
}

while (reading) {
  try {

    char[] arr = new char[2048];
    ch = 0;
    ch = in.read(arr);
    if (ch < 0) {
      reading = false;
    }
    else {
    //process message
  } catch (IOException ex) {
    Logger.error(this, ex);
  }
}

Теперь я хочу сделать следующее: если через x секунду clientSocket не получил никакого сообщения, он выйдет из цикла, закроет соединение и перезапустит принимающее соединение.

Я знаю, как закрыть соединениеи возобновить прием соединения, но я все еще не могу понять, остальные.Есть ли способ сделать это?

Спасибо за помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...