Этот вопрос уже имеет ответ здесь:
Я пытаюсь узнать, подключается ли Сокет TCP Java в настоящее время, следующее просто, кажется, говорит мне, был ли сокет подключен в какой-то момент - не, является ли в настоящее время тихим соединенный.
socket.isConnected();
Любая ценившая справка, спасибо.
Предполагая, что у вас есть какой-то уровень контроля над протоколом, я большой поклонник отправки сердца, чтобы убедиться, что соединение активен. Доказано, что он является самым пропорциональным методом доказательства и часто даст вам самое быстрое уведомление, когда соединение было сломано.
TCP Keepalives будет работать, но что, если удаленный хост внезапно выключен? TCP может занять много времени на время ожидания. С другой стороны, если у вас есть логика в вашем приложении, которое ожидает от сердца, отвечаю каждые x секундах, в первый раз, когда вы не получаете их, вы знаете, что соединение больше не работает, либо по сети, либо в номере сервера на удаленной стороне Отказ
См. Мне нужно сердцебиению, чтобы держать сообщение TCP открыть? для большего обсуждения.