Есть ли какая-то разница между этими двумя реализациями сокетов?
Я сделал клиент-серверное приложение с использованием TCP-сокетов, но клиенты тоже застряли часто и они бросают "Время ожидания соединения истекло"во время чтения новых сообщений с сервера.
В обоих приложениях я использую это:
try{ do{ message=(String) input.readLine(); System.out.println(message); }while(!message.equals("Disconnect")); }catch (IOException e) { System.out.println(e.getMessage()); }
Но на примерах, которые я видел, они делают это:
do{ try{ message=(String) input.readLine(); System.out.println(message); }catch (IOException e) { System.out.println(e.getMessage()); } }while(!message.equals("Disconnect"));
Есть ли какая-то существенная разница в использовании "try" из "do{}while", чем использование "try" внутри " do{}while"?
Что я уже пробовал:
До сих пор я тестировал оба способа, но мне не удалось воссоздать ошибку.
Jochen Arndt
Большой разницы нет, но второй-это обычный вариант (ловить исключения для той части кода, которая может выбросить).
Однако в вашем примере второй вариант не покинет цикл при ошибках, в то время как первый это сделает.
Но это не имеет никакого отношения к ошибкам тайм-аута сети. Решение этих проблем требует знания того, как работает ваша коммуникация.