Я использую (Java) TCP-сокет для подключения к сетевому устройству.
Подумайте о следующем сценарии:
1) Соединение с сокетом TCP успешно создано
2) Сетевое соединение на короткое время прервано (я проверяю это, просто отключивсетевой кабель)
3) Моя программа закрывает сокет.
4) Другая сторона сокета отвечает только на запросы с моей стороны;таким образом, сокет на другом конце соединения не обязательно обнаруживает разрыв соединения
5) Сетевое соединение восстанавливается
6) Моя программа пытается снова открыть сокет
7) -> Получить SocketException: connection refused
Почему?
Поскольку сокет на другом конце считает, что соединение tcp все еще открыто, и, таким образом, отказывается от любогодругие запросы на подключение в том же порту.
Что будет дальше?
Примерно через 5 минут моя программа снова может открыть сокет, потому что другой конец обнаружил, что соединение больше не активно.
Вопрос:
Есть ли способ сократить время, пока я не смогу снова подключиться?Я не могу внести какие-либо изменения на «другой» сайт, т. Е. Не могу изменить обработку tcp-соединения моего устройства с поддержкой сети.