linux 下 libcurl 终极详解

C语言 访问 URL 的实现。

Linux libcurl安装及注意事项:Linux libcurl安装及注意事项 - 蘭亭客 - 博客园

(安装 libcurl 源码库 )

libcurl 使用说明和网页抓取 linux下的curl编程:libcurl 使用说明和网页抓取 linux下的curl编程_ultrapp的专栏-CSDN博客

curl 库 使用实例 

1. 下载最新源码 编译成 libcurl.so 

2.  包含所有头文件 

3. 使用实例  有点东西 有内涵

    static size_t write_data(char *buf, size_t size, size_t nmemb, void *userdata)
    {
        static size_t file_total_size = 0;
        size_t file_total = 0;
        CurlInfo* curl_info = (CurlInfo *)userdata;
        if (curl_info->language_id == CN) {
            file_total = CN_SIZE;
        } else if (curl_info->language_id == EN) {
            file_total = EN_SIZE;
        }
        size_t realSize = size * nmemb;
        size_t file_return_size = write(curl_info->fd, buf, realSize);
        if (file_return_size <= 0 ) {
            return -1;
        }
        file_total_size += file_return_size;
        // pr_dbg("file_total_size:: %ld\n", file_total_size);
        VoiceDataStatus_t voice_data_status;
        voice_data_status.language_id = curl_info->language_id;
        voice_data_status.schedu = 0x64 * file_total_size / file_total;  
        voice_data_status.status = 0x1; 
        if (voice_data_status.schedu % 10 == 0) {
            curl_info->cloud_server->SendTaskVoiceDataStatus(&voice_data_status);
        }
        return file_return_size;
    }

    void BrainHub::GetHttpRequest(const char* file_name, const char* url,  CurlInfo* curl_info)
    {
        if (file_name == NULL || url == NULL) {
            pr_err("file_name or url is null.\n");
            return;
        }
        int fd = open(file_name,  O_RDWR|O_CREAT,  0644);
        if (fd == -1) {
            pr_err("file fd is null.\n");
            return;
        }
        curl_info->fd = fd;
        CURLcode ret = curl_global_init(CURL_GLOBAL_ALL);
        if (CURLE_OK != ret) {
            pr_err("curl_global_init failed.\n");
            return;
        }
        CURL *handle = curl_easy_init();
        if (handle == NULL) {
            pr_err("curl_easy_init failed.\n");
            return;
        }
        curl_easy_setopt(handle, CURLOPT_URL, url);
        curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, write_data);
        curl_easy_setopt(handle, CURLOPT_WRITEDATA, (void *)curl_info);
        curl_easy_perform(handle);
        curl_global_cleanup();
        close(fd);
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦幽风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值