参考:网络编程知识预备(5) ——libcurl库简介及其编程访问百度首页_行稳方能走远的博客-CSDN博客
Http协议之libcurl实现 - 谢呈勖 - 博客园 (cnblogs.com)
目录
1、curl_global_init():初始化libcurl
2、curl_easy_init():得到easy interface型指针,拿到句柄
3、curl_easy_setopt(CURL *handle, CURLoption option, parameter):设置传输选项
一、Libcurl库简介
在linux下用c语言做HTTP的编程有一种方法是依赖于这个libcurl库,以后做跨平台网络协议相关的开发,第一个要想到的就是它。
libcurl是一个跨平台的网络协议库,支持http, https, ftp等协议,libcurl同样支持:
(1)HTTPS证书授权
(2)HTTP POST, HTTP PUT, FTP 上传
(3)HTTP基本表单上传,代理,cookies,和用户认证
库下载地址: Release 7.71.1 · curl/curl · GitHub
然后发送到linux开发环境中。
二、Libcurl等三方库的通用编译方法
解压下载的库
tar xvf curl-7.71.1.tar.bz2
进入文件夹
cd curl-7.71.1
对于这种开源的包,一定要学会它的使用:
先看 README,docs 文件夹里的 curl.1 和INSTALL文件
回到/curl-7.71.1
目录下,configure --help看看
./configure --help
库的配置、编译、安装
(1)安装位置的更改:
配置为:$ 获取当前路径,编译的时候会自动生成_install文件夹,并且把编译生成的东西全部放入这个文件夹。
./configure --prefix=$PWD/_install
针对于交叉编译的配置:编译后在树莓派上用
./configure --prefix=$PWD/_install --host=arm-linux
(2)编译、安装
make
make install
预览
这些都是要用到的头文件
编译是要链接库一样
gcc a.c -lwiringPi -lpthread
用到这个库的时候,我们同样需要链接_install/lib
里面的libcurl.so
动态库 (.a
是静态库)‘
三、调用libcurl编程访问百度主页
把_install
里的内容结合一下示例代码来访问一下百度。
demo1.c
#include <stdio.h>
#include <curl/curl.h>
typedef unsigned int bool;//数据类型别名用typedef 有分号
#define true 1 //宏定义(替换)用define 无冒号
#define false 0
bool getUrl(char *filename)//GET请求
{
CURL *curl;
CURLcode res;
FILE *fp;
if ((fp = fopen(filename, "w")) == NULL) // 返回结果用文件存储
return false;
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Accept: Agent-007");
curl = curl_easy_init(); // 初始化
if (curl)