Linux上curl的安装和使用
文章目录
- curl 下载
- curl的安装
- curl的使用(C/C++)
- curl的easy系列
- 参考文献
curl 下载
这个直接在官网上使用wget
下载就可以:
wget --no-check-certificate https://curl.haxx.se/download/curl-7.80.0.tar.gz
curl的安装
- 我们解压下载后的安装包:
tar zxvf curl-7.80.0.tar.gz
- 进入解压后的目录:
cd curl-7.80.0
- 执行配置文件:
./configure
- make:
make
注:这一步可能会报如下的错误:select TLS backend(s) or disable TLS with --without-ssl.
我们在执行配置文件的时候,需要加入如下配置项
./configure --with-wolfssl
sudo make test
sudo make install
curl的使用(C/C++)
curl是一个用C语言开发的库,支持很多网络协议,但是主要使用的还是HTTP协议。
curl的接口分为两大类:easy系列和multi系列。其中easy系列是同步调用;multi系列是异步的多线程调用。
注:
使用g++编译的时候记得链接curl库:-l curl
curl的easy系列
easy系列去收发HTTP数据的接口函数主要有4个:
- curl_easy_init:
这个函数原型如下,其会创建一个curl句柄,这个是其他curl函数要用的。
CURL *curl_easy_init(void);
- curl_easy_setopt:
这个函数原型如下,其会设置各种请求参数,比如请求方法、URL、header/body数据、超时、回调函数等等。
CURLcode curl_easy_setopt(CURL *curl, CURLoption option, ...);
- curl_easy_perform:
这个函数的原型如下,其用来发送数据,返回的数据由回调函数处理
CURLcode curl_easy_perform(CURL *curl);
- curl_easy_cleanup:
这个函数的原型如下,这个函数用来清理句柄相关资源,结束会话。
void curl_easy_cleanup(CURL *curl);
下面是个用来收发数据的简短例子:
int main()
{//创建curl句柄auto curl_fd = curl_easy_init();assert(curl_fd);//设置请求的URLcurl_easy_setopt(curl_fd, CURLOPT_URL, "www.baidu.com");//发送数据auto res = curl_easy_perform(curl_fd);if (res != CURLE_OK){cout << curl_easy_strerror(res) << endl;}curl_easy_cleanup(curl_fd);
}
当然,我们还可以设置回调函数,回调函数的原型如下:
/*** @brief 回调函数** @param recv_data 此次接收到的数据* @param size 此次接收到的字节数* @param nmemb 块数* @param user_buf 出参数据,传出http返回数据,可以用strcat(user_buf,recv_data)收集recv_data的数据。当然用户要定义缓冲区。* @return size_t*/
size_t write_callback(char *recv_data, size_t size, size_t nmemb, void *user_buf);
我们通过curl_easy_setopt
绑定一下就好了:
size_t write_callback(char *recv_data, size_t size, size_t nmemb, void *user_buf)
{cout << "size=" << size << endl;cout << "recv_data=" << recv_data << endl;cout << "nmemb=" << nmemb << endl;return size * nmemb; //返回值必须是这个,否则res != CURLE_OK
}int main()
{//创建curl句柄auto curl_fd = curl_easy_init();assert(curl_fd);//设置请求的URLcurl_easy_setopt(curl_fd, CURLOPT_URL, "www.baidu.com");curl_easy_setopt(curl_fd, CURLOPT_WRITEFUNCTION, &write_callback);//发送数据auto res = curl_easy_perform(curl_fd);if (res != CURLE_OK){cout << curl_easy_strerror(res) << endl;}curl_easy_cleanup(curl_fd);
}
注:
write_callback的函数返回值必须为size * nmemb,否则会报错:Failed writing received data to disk/application
参考文献
[1] 罗剑锋.罗剑锋的C++实战笔记.极客时间
Linux上curl的安装和使用相关推荐
- JProfiler远程监控Linux上Tomcat的安装过程细讲(步骤非常详细!!!)
JProfiler远程监控Linux上Tomcat的安装过程细讲(步骤非常详细!!!) 1.文件准备: 服务器:CentOS Linux release 7.3.1611 (Core) Apa ...
- 深度linux安装spotify,如何在 Linux 上使用 snap 安装 Spotify(声破天)
如何在 Ubuntu Linux 桌面上安装 spotify 来在线听音乐? Spotify 是一个可让你访问大量歌曲的数字音乐流服务.你可以免费收听或者购买订阅,可以创建播放列表.订阅用户可以免广告 ...
- 在linux上使用yum安装JDK
在linux上使用yum安装JDK 2014-05-14 14:36:59 分类: Java 1.查找java相关得列表 [qyf@localhost ~]$ yum -y list java* 执行 ...
- Linux上的redis安装和后台启动
Linux上的redis安装和后台启动 1.环境准备 2.下载与安装 3.前台启动redis服务 4.后台启动redis服务 5.端口6379不同的解决办法 1.环境准备 Redis是用C实现的,需要 ...
- linux 自定义安装软件,在/ usr中跟踪Linux上自定义软件安装的最佳实践?
我正在 Linux上编译和安装软件(在我的案例中是Debian Squeeze).下载,解压缩,安装依赖的开发人员库/标题,运行configure然后make. 到目前为止,所有内容仍保留在源目录中. ...
- oracle的安装liunx,linux上oracle简单安装
当前位置:我的异常网» Linux/Unix » linux上oracle简单安装 linux上oracle简单安装 www.myexceptions.net 网友分享于:2013-07-27 浏 ...
- 怎么在Linux上下载并安装ESET NOD32 Antivirus 4桌面版
转自:怎么在Linux上下载并安装ESET NOD32 Antivirus 4桌面版 下载并安装ESET NOD32 Antivirus 4的Linux桌面版,根据下面的步骤一步一步的来: I. 下 ...
- Linux上subversion的安装和使用
目录 1.Linux上subversion下载... 3 2.Linux上subversion的安装... 6 2.1.查询系统之前安装的旧版本... 6 2.2.yum安装yum源默认版本... 7 ...
- Docker在Linux上下载与安装配置
Docker在Linux上下载与安装配置 官方文档: Redirecting- 1.删除旧版本的docker,防止有残留 sudo yum remove docker \docker-client \ ...
最新文章
- 《OpenCV3编程入门》学习笔记5 Core组件进阶(二) ROI区域图像叠加图像混合
- 一次打流过程的优化反思(iperf3的灵活运用)
- windows10环境下的RabbitMQ安装步骤(图文)
- WinCE 开始菜单StartMenu_Create()函数代码分析
- Linux下常用日志分析工具
- android 8 ril,Android系统启动——8 附录2:相关守护进程简介
- C++Tower of Hanoi汉诺塔的实现算法(附完整源码)
- PHP如何保存当前用户
- MyBatis 问题(持续更新)
- vue 2.6 中 slot 的新用法
- 嵌入式根文件系统制作
- R语言-单一变量分析
- from mysql partition select_通过分区(Partition)提升MySQL性能[原创翻译]
- 复制粘贴带相关的文字及链接
- Android Studio升级到3.0.0后构建项目时出现的问题总结
- 快速测试UTF8编码的文件是不是加了BOM,不限PHP
- php unset函数 赋值 null来销毁变量
- 利用计算机属性将字符串逆序输出,字符串逆序的各种实现算法
- Google Gmail十年回首
- 一个农村孩子的大城市梦想之深入江湖!
热门文章
- Ubuntu安装LaTeX
- Hive SQL常用函数
- 涂鸦智慧工业解决方案成功入驻亚马逊云科技Marketplace
- c语言中 push 函数,C ++ STL中的stack :: push()函数
- 如何使用ODX描述诊断会话和安全等级
- VS编程,WPF中,通过telerik控件创建颜色选择器,颜色拾取器,调色板的一种方法
- MP1655GG-Z
- 海量点云数据快速读取方法
- Arm云游戏及虚拟化技术沙龙,Arm中国,NVIDIA,腾讯及百度等为你分享超强技术干货...
- Siemens_NX2206_8080_20221220(NX2206系列免安装)