libcurl异步方式使用总结

实习期间用到了libcurl来做HTTPS双向认证,用的是异步方式,简单总结一下。

libcurl这个库的同步方式很简单,不做介绍,而异步方式很难理解,本博客参考官网的demo讲解,刚开始看可能很蒙,最后会整合全流程。

使用步骤如下:

1.初始化创建一个multi句柄:

CURLM *multi = curl_multi_init();

2.对multi句柄设置socket回调和timer回调:

curl_multi_setopt(multi, CURLMOPT_SOCKETFUNCTION, multi_sock_cb);
curl_multi_setopt(multi, CURLMOPT_SOCKETDATA, &param);
curl_multi_setopt(multi, CURLMOPT_TIMERFUNCTION, multi_timer_cb);
curl_multi_setopt(multi, CURLMOPT_TIMERDATA, &param);

3.对multi句柄添加easy句柄,异步开始:

CURL *easy = curl_easy_init();
curl_easy_setopt(conn->easy, CURLOPT_URL, url);
curl_easy_setopt(conn->easy, CURLOPT_WRITEFUNCTION, write_cb);  // 负责读入数据的函数
curl_easy_setopt(conn->easy, CURLOPT_WRITEDATA, &data);
curl_mu
  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
libcurl 是一个常用的用于网络传输的 C 函数库,它支持各种网络协议和通信方式,包括 HTTP、FTP、SMTP 等,并且可以实现异步长连接访问。 异步访问是指在进行网络请求的同时,程序可以继续执行其他操作,不需要等待请求完成再进行下一步操作。而长连接是指在一次建立连接后,可以多次发送请求,不需要每次都重新建立连接。 在 libcurl 中,可以通过设置 CURLMOPT_PIPELINING 选项来开启长连接,然后通过设置 curl_easy_setopt 函数的 CURLMOPT_CHUNK_LENGTH 和 CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 选项来调整请求的长度和延迟等参数。 同时,libcurl 还提供了 multi interface,通过这个接口可以在多个请求之间切换,实现异步访问。具体方法是先通过 curl_multi_init 函数初始化一个 multi 对象,然后使用 curl_easy_setopt 函数设置每个请求的参数,最后通过 curl_multi_add_handle 函数将请求添加到 multi 对象中。通过 curl_multi_perform 函数可以开始异步访问,然后通过 curl_multi_fdset 和 curl_multi_wait 函数来等待请求完成,最后通过 curl_multi_remove_handle 函数将请求从 multi 对象中删除。 libcurl 异步长连接访问的主要优势在于可以提高程序的并发能力和效率,减少网络请求的开销和资源消耗。但需要注意的是,由于异步访问可能会带来线程安全等问题,因此在使用时需要注意保护资源和数据的完整性和安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值