咸鱼

咸鱼是以盐腌渍后,晒干的鱼

0%

Linux下C语言HTTP通讯库

很多嵌入式设备都有接入网络的功能,那么在Linux下的C,用什么HTTP库比较合适呢?嵌入式设备资源都比较紧张,大的库肯定不是一个好的选择。
由于不是专业的,只能找到以下库:

  • libcurl
    curl-7.56.1.zip 大小是5.27MB,里面包含了supporting HTTP, HTTPS, FTP, FTPS, GOPHER, TFTP, SCP, SFTP, SMB, TELNET, DICT, LDAP, LDAPS, FILE, IMAP, SMTP, POP3, RTSP and RTMP. 所以能精简出来HTTP是没有5.27MB那么大。

    而且一般linux系统都带有curl的库,c语言可以直接引入curl的头文件。

    libcurl基本知识post和get请求

    c/c++调用libcurl库发送http请求的两种基本用法

    示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #include<stdio.h>
    #include<curl/curl.h>
    #include<stdlib.h>

    int main(int argc, char *argv[])
    {
    CURL *curl; //定义CURL类型的指针
    CURLcode res; //定义CURLcode类型的变量,保存返回状态码

    if(argc!=2)
    {
    printf("Usage: file <url>;\n");
    exit(1);
    }

    curl = curl_easy_init(); //初始化一个CURL类型的指针

    if(curl!=NULL)
    {
    //设置curl选项.其中CURLOPT_URL是让用户指定url.argv[1]中存放的命令行传进来的网址
    curl_easy_setopt(curl,CURLOPT_URL, argv[1]);
    //调用curl_easy_perform执行我们的设置.并进行相关的操作.在这里只在屏幕上显示出来.
    res = curl_easy_perform(curl);
    //清除curl操作.
    curl_easy_cleanup(curl);
    }

    return 0;
    }
    1
    2
    3
    #编译和运行
    $ gcc test_curl.c -o test -lcurl
    $ ./test www.baidu.com
  • Tinyhttpd
    ​Tinyhttpd 是J. David Blackstone在1999年写的一个不到 500 行的超轻量型 Http Server

  • Boa
    ​Boa是一个非常小巧的web服务器,其可执行代码只有约60Kb

  • ghttp
    官网没有下载了,但根据其他下载站来看,只有144KB,要源码可以去github搜一下。封装示例

  • C++ client for making HTTP/REST requests

  • C++ Requests: Curl for People

  • tbox的http模块

  • 自己拼包

  • 无意中发现的一个库,里面封装了一些 HTTPClient 和其他IO的库

  • C++ client for making HTTP/REST requests