Я согласен с Zan Lynx. Нет никакой гарантии, но вы можете поддерживать соединение практически бесконечно, отправляя данные через него, при условии отсутствия проблем с подключением или пропускной способностью.
Обычно я придерживался подхода поддержания уровня приложений, хотя обычно это происходит потому, что это было в спецификации клиента, поэтому мне пришлось это сделать. Но просто отправляйте какой-нибудь короткий фрагмент данных каждую минуту или две, и вы ожидаете какого-то подтверждения.
Считаете ли вы, что один сбой подтвердил, что не удалось установить соединение, решать вам. Как правило, это то, что я делал в прошлом, хотя был случай, когда я ждал три неудачных ответа подряд, чтобы разорвать соединение, потому что приложение на другом конце соединения было чрезвычайно ненадежным, чтобы ответить на: «Вы здесь? ?» запросы.
Если произойдет сбой соединения, что, возможно, в какой-то момент произойдет, даже если машины находятся в одной сети, просто попытайтесь восстановить его. Если это не удается установленное количество раз, то у вас есть проблема. Если ваше соединение постоянно прерывается после того, как оно было подключено какое-то время, у вас снова возникла проблема. Скорее всего, в обоих случаях это, скорее всего, проблема с сетью, а не с вашим кодом, или, возможно, проблема со стеком TCP / IP на вашем компьютере (известно: у меня возникли проблемы с этим на старой версии QNX - это просто случайно упадет). Сказав, что у вас может быть проблема с программным обеспечением, и единственный способ узнать наверняка - это часто подключить отладчик или войти туда. Например. если вы всегда можете подключиться успешно, но через некоторое время вы перестанете получать ACK, даже после повторного подключения, то, возможно, ваш сервер заблокирован или застревает в цикле или что-то в этом роде.
Что действительно полезно, так это настроить серию длительных тестов при различных условиях нагрузки: от просто отправки запросов на сохранение активности и ответов на них / ack до полной нагрузки на сервер. Как правило, это придаст вам больше уверенности в ваших программных компонентах и может быть очень полезно для устранения некоторых действительно странных проблем, которые не обязательно вызовут проблемы с вашим соединением, хотя они могут привести к проблемам с проводимыми транзакциями. Например, когда-то я писал сервер приложений для телекоммуникаций, который предоставлял такие услуги, как перевод номеров, и мы просто оставляли его работать по несколько дней. Дело в том, что когда наступила суббота, на целый день она отклоняла каждый поступивший запрос на вызов, который составлял миллионы вызовов, и мы не знали, почему. Оказалось, из-за одной опечатки в коде преобразования даты, которая вызвала проблему только по субботам.
Надеюсь, это поможет.