Мое приложение чата подключается к серверу, и пользователь отправляет / получает информацию. При изменении соединения, такого как 3g-> wifi, wifi-> 3g, потеря соединения для передачи данных и т. Д., Гнездо иногда остается подключенным целую вечность до разъединения. В течение этого времени невозможно определить, активно ли соединение, кажется, что сообщения отправляются просто отлично. В других случаях при отправке сообщения оно выдает ошибку ввода-вывода и отключается.
Помимо реализации кода для обнаружения изменений соединения и соответствующего повторного подключения, возможно ли, чтобы сокет немедленно выдавал исключение ввода-вывода при изменении соединения?
Редактировать: я подключаюсь, используя следующий код:
Socket sock = new Socket();
sock.connect(new InetSocketAddress(getAddress(), getPort())), getTimeout());
//get bufferedReader and read until BufferedReader#readLine() returns null
Я не использую setSoTimeout, поскольку данные могут не передаваться в течение длительных периодов времени в зависимости от конфигурации удаленного сервера.