HOME
BLOG
curl和libcurl
May 26 2023

curl+libcurl简化你的网络请求!

curl 是一个linux工具,通过命令行来实现其强大的功能。但通过libcurl,可以在各种开发环境中通过编码的 形式实现curl上传、下载功能,其中涉及GET、PUT、POST、DELETE等方法。cURL支持的通信协议有FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSP。可谓是支持力度相当大的一个工具了。

curl命令行工具:Linux Curl命令详解教程 | myfreax

curl命令用法_curl 命令_追梦菜鸟的博客-CSDN博客

curl 的用法指南 - 阮一峰的网络日志 (ruanyifeng.com)

curl网站开发指南 - 阮一峰的网络日志 (ruanyifeng.com)

curl -o 文件名 网址 可以把对应网页保存下来到文件里

-o 保存成文件

-F是用来传二进制文件的 curl -F ‘xx文件’ 地址/发post请求传表单数据,上面实现就是用到这个参数

-H 用来加http请求头的

做断点续传可以用-C去恢复上次的传输进度

libcurl库学习

(转)libcurl库使用方法,好长,好详细。 - _浪潮之巅.☆ - 博客园 (cnblogs.com) 感觉光看这个就非常的详细了

curl 简单实例 (c代码通过 curl-url 实现信息获取)_curl c_我若成精的博客-CSDN博客

Libcurl使用入门教程_libcurl c++ example_每天看一遍,防止恋爱&&堕落的博客-CSDN博客

可以用libcurl库函数去操作完成curl命令


#include <stdio.h>
#include <curl/curl.h>

int main() {
    CURL *curl;
    CURLcode res;
    char *url = "http://www.baidu.com";

    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, url);
        res = curl_easy_perform(curl);
        if(res == CURLE_OK)
            printf("Request succeeded!\n");
        else
            printf("Request failed: %s\n", curl_easy_strerror(res));

        curl_easy_cleanup(curl);
    }
    printf("over!\n");
    return 0;
}

gcc -o main pp.c -lcurl编译

使用最开始要初始化libcurl,可以用curl_global_init做全局配置他只能调用一次,自己不调用的话系统在curl_easy_init()前会自动调用,(多线程会有问题,最好手动调)这个demo是使用curl_easy_init()函数初始化libcurl库,并使用curl_easy_setopt()函数设置要执行的URL。发起http get请求获取相应的请求状态,用curl_easy_perform()函数执行实际的请求,并返回状态码。最后,curl_easy_cleanup()函数释放curl库。

用libcurl做sftp去传东西,有关密码的也能用cur_easy_setopt这个flag:CURLOPT_USERPWD去做密码,私钥可以用CURLOPT_KEYPASSWD去设置

工作