物联网协议 HTTP libcurl

参考https://yq.aliyun.com/ask/300773

curl是利用URL语法在命令行方式下工作的开源文件传输工具。 
它支持很多协议:DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, 
LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet and TFTP。 
curl同样支持SSL证书,HTTP POST, HTTP 
PUT,FTP上传,基于表单的HTTP上传,代理(proxies)、cookies、用户名/密码认证(Basic, Digest, 
NTLM等)、下载文件断点续传,上载文件断点续传(file transfer resume),http代理服务器管道(proxy 
tunneling)以及其他特性。

libcurl为一个免费开源的,客户端url传输库,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, 
HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, 
SMTP, SMTPS, Telnet and TFTP等协议。 
同curl一样,libcurl也支持SSL证书,HTTP POST, HTTP 
PUT,FTP上传,基于表单的HTTP上传,代理(proxies)、cookies、用户名/密码认证(Basic, Digest, 
NTLM等)、下载文件断点续传,上载文件断点续传(file transfer resume),http代理服务器管道(proxy 
tunneling)等。 
curl与libcurl对比 

相同点 

curl和libcurl都可以利用多种多样的协议来传输文件,包括HTTP, HTTPS, FTP, FTPS, GOPHER, LDAP, DICT, TELNET and FILE等。 

不同点 

curl是命令行工具,可以通过shell或脚本来运行curl。curl底层所使用的库是libcurl。 
libcurl是一个库,通常与别的程序绑定在一起使用,如命令行工具curl就是封装了libcurl库。所以我们也可以在你自己的程序或项目中使用libcurl以获得类似CURL的强大功能。接下来将要介绍的PHP扩展就是对curl的一个封装。
libcurl是高度可移植的,可以工作在不同的平台上,支持Windows,Unix,Linux等。  

curl_global_init()接收一个参数,告诉libcurl如何初始化。参数CURL_GLOBAL_ALL 会使libcurl初始化所有的子模块和一些默认的选项,通常这是一个比较好的默认参数值。

curl_easy_setopt(curl, CURLOPT_URL, filename); //设置下载地址
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 3);//设置超时时间
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);//设置写数据的函数
curl_easy_setopt(curl, CURLOPT_WRITEDATA, str);//设置写数据的变量
res = curl_easy_perform(curl);//执行下载
if(CURLE_OK != res) return NULL;//判断是否下载成功

curl_global_cleanup//当应用程序不再使用libcurl的时候,应该调用curl_global_cleanup来释放相关的资源。在程序中,应当避免多次调用curl_global_init和curl_global_cleanup。它们只能被调用一次。

猜你喜欢

转载自blog.csdn.net/weixin_42627035/article/details/84993633