Я использую libcurl, и мне нужна некоторая информация для проблемы, с которой я столкнулся сейчас, когда "соединение кажется мертвым"
Для защищенной передачи сообщений я использую libcurl, чтобы выполнить с поддержкой SSL (TLS) для подключения к серверу.
Однако по поводу проблемы, с которой я столкнулся, я не вижу достаточной информации в Интернете (возможно, я не ищу правильные слова)
На высоком уровне это то, что происходит. Я могу успешно установить соединение с сервером, и я могу отправлять-получать данные. Если я задержу сеанс в течение небольшого окна (15 секунд), а затем запускаю дальнейшие транзакции/сообщения, я вижу, что "Соединение кажется мертвым" и "повторно подключиться" в журналах консоли из libcurl. Но он висит там и разрывается, когда завиток уходит естественным путем.
Я уволил "wirehark" и проанализировал, что я получил пакеты "FIN, ACK" и "ACK" с сервера, прежде чем я начну повторно использовать существующее соединение. Но так как я подождал довольно много времени, чтобы ответить на сервер с ACK от клиента к серверу, я думаю, что сервер не выполняет ни одного из моих будущих запросов.
Есть ли способ, когда я могу сразу ответить на сервер для FIN, ACK, полученных во время соединения?
Это проблема с libcurl, или я должен поговорить с командой сервера, почему я вижу FIN, ACK в середине моего коннекта
У вас есть постоянная поддержка TCP между клиентом/сервером. Проверьте значение keep, которое вы указали в curl. Правильный интервал продолжительности жизни будет гарантировать, что соединение будет живым, если клиенту нечего отправлять.
Из справки libcurl help: CURLOPT_TCP_KEEPALIVE
Пройти по. Если установлено значение 1, будут отправлены пробники keepalive TCP. Задержку и частоту этих зондов можно контролировать с помощью опций CURLOPT_TCP_KEEPIDLE и CURLOPT_TCP_KEEPINTVL, если операционная система поддерживает их. Установите значение 0 (поведение по умолчанию) для отключения зонда keepalive