实习期间用到了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, ¶m);
curl_multi_setopt(multi, CURLMOPT_TIMERFUNCTION, multi_timer_cb);
curl_multi_setopt(multi, CURLMOPT_TIMERDATA, ¶m);
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