0

我正在使用 libcurl,我需要一些信息来解决我目前面临的“连接似乎已死”的问题</p>

对于安全的消息传输,我使用 libcurl easy perform with SSL support (TLS) 连接到服务器。

但是对于我面临的问题,我在互联网上没有看到足够的信息(可能是我没有用正确的词来寻找)

在高层次上,这就是发生的事情。我能够成功地建立与服务器的连接,并且能够发送接收数据。如果我在一个小窗口(15 秒)内保持会话空闲,然后触发更多事务/消息,我会在 libcurl 的控制台日志中看到“连接似乎已死”和“重新连接”。但是当卷曲在轻松执行时自然超时时,它会挂在那里并超时。

我启动了“wireshark”并分析了在我开始重新使用现有连接之前从服务器收到了“FIN、ACK”和“ACK”数据包。但是由于我等待了相当长的时间以从客户端到服务器的 ACK 响应服务器,我猜服务器不会满足我未来的任何请求。

有没有一种方法可以让我立即响应服务器以获取在连接期间收到的 FIN、ACK?

这是 libcurl 的问题还是我应该与服务器团队讨论为什么我在连接中间看到 FIN,ACK

4

1 回答 1

-1

您是否在客户端/服务器之间打开了 TCP keep-alive。请检查您在 curl 中指定的保持活动值。如果客户端没有要发送的内容,适当的保持活动间隔将确保连接处于活动状态。

来自 libcurl 帮助文档:CURLOPT_TCP_KEEPALIVE

传了很久。如果设置为 1,将发送 TCP keepalive 探测。这些探测的延迟和频率可以由 CURLOPT_TCP_KEEPIDLE 和 CURLOPT_TCP_KEEPINTVL 选项控制,前提是操作系统支持它们。设置为 0(默认行为)以禁用 keepalive 探测

于 2013-11-05T01:33:09.540 回答