У меня есть программа на C ++, использующая стандартный API-интерфейс сокетов, работающий в Ubuntu 7.04, который поддерживает открытый сокет для сервера. Моя система живет за роутером. Я хочу выяснить, сколько времени может занять получение ошибки сокета, как только моя программа начнет отправлять ПОСЛЕ того, как маршрутизатор отключен от сети.
То есть моя программа может бездействовать (в ожидании пользователя). Маршрутизатор отключен от Интернета, а затем моя программа пытается установить связь через этот сокет.
Очевидно, что это не скоро будет известно, потому что TCP достаточно искусен в поддержании сокета в неблагоприятных условиях сети. Это заставляет TCP повторять попытки много раз, многими способами, прежде чем он, наконец, сдается.
Мне нужно установить какое-то время «наихудшего случая», которое я могу дать группе QA (и клиенту), чтобы они могли проверить, что мой код переходит в надлежащее автономное состояние.
(для справки, моя программа является частью системы оплаты за насос для заправочных станций, а сервер - это система, которая разрешает платежные транзакции. Станция может быть полностью отключена от сети по разным причинам. и клиент просто хочет знать, чего ожидать).
РЕДАКТИРОВАТЬ: Я не был ясен. Там нет человека, ожидающего этой вещи, это просто для бэк-офиса нотации системы в автономном режиме. Когда аутентификация не возвращается через 30 секунд, транзакция заканчивается, и люди уходят, чтобы заняться другими делами.
РЕДАКТИРОВАТЬ: Я пришел к выводу, что вопрос в действительности не отвечает в общем случае. Количество факторов, участвующих в определении того, сколько времени требуется TCP-соединению для устранения ошибки из-за сбоя в нисходящем направлении, слишком зависит от точного оборудования и сбоя, чтобы не было простого ответа.