TCP-соединение отказано после разрыва соединения на короткое время - PullRequest
1 голос
/ 10 февраля 2012

Я использую (Java) TCP-сокет для подключения к сетевому устройству.

Подумайте о следующем сценарии:

1) Соединение с сокетом TCP успешно создано

2) Сетевое соединение на короткое время прервано (я проверяю это, просто отключивсетевой кабель)

3) Моя программа закрывает сокет.

4) Другая сторона сокета отвечает только на запросы с моей стороны;таким образом, сокет на другом конце соединения не обязательно обнаруживает разрыв соединения

5) Сетевое соединение восстанавливается

6) Моя программа пытается снова открыть сокет

7) -> Получить SocketException: connection refused

Почему?

Поскольку сокет на другом конце считает, что соединение tcp все еще открыто, и, таким образом, отказывается от любогодругие запросы на подключение в том же порту.

Что будет дальше?

Примерно через 5 минут моя программа снова может открыть сокет, потому что другой конец обнаружил, что соединение больше не активно.

Вопрос:

Есть ли способ сократить время, пока я не смогу снова подключиться?Я не могу внести какие-либо изменения на «другой» сайт, т. Е. Не могу изменить обработку tcp-соединения моего устройства с поддержкой сети.

1 Ответ

0 голосов
/ 10 февраля 2012

Не имея возможности изменить способ обработки TCP-соединения на другой стороне, к сожалению, вы ничего не сможете сделать в этом сценарии.Это распространенная проблема с сокетами Java в целом.

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