gpt4 book ai didi

c++ - 在尝试连接时取消 curl_easy_perform

转载 作者:搜寻专家 更新时间:2023-10-31 01:41:13 24 4
gpt4 key购买 nike

有没有一种方法可以取消 C++ 中的 curl_easy_perform??

我有一个场景,我试图连接到离线的网络资源,curl_easy_perform 需要一定的时间才能返回 CURLE_COULDNT_CONNECT。但与此同时,用户关闭了希望连接的 UI,我想立即切断 curl 连接,而不必等待它连接失败。

我尝试存储我使用的 curl 指针:

CURL *pEasy = curl_easy_init ();

然后在它执行 curl_easy_perform 时我调用了

curl_easy_cleanup(pEasy);

试图释放或“停止”curl 连接但它崩溃了,我从 curl_easy_perform 收到以下错误:

Unhandled exception at blah blah: Access violation reading location 0x00000004.

有什么方法可以取消连接尝试????我已阅读此链接:How can I immediately cancel a curl operation? 但它似乎在成功连接后处理取消 curl 连接。

编辑 - 解决方案

我发现如果我调用:

curl_easy_reset( pEasy );

然后

curlResult = curl_easy_perform ( pEasy );

几乎立即返回结果 CURLE_OPERATION_TIMEDOUT

我想这就是我需要的:)

最佳答案

您可以在线程中运行 curl_easy_perform 并保留 CURL 对象。

每当您想关闭连接时,在 CURL 对象上调用 curl_easy_setopt(m_chatCurl, CURLOPT_TIMEOUT_MS, 1)

这样连接就会超时,线程就能完成。

关于c++ - 在尝试连接时取消 curl_easy_perform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28767613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com