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