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