日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

智能家居项目(十三)

發布時間:2023/12/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 智能家居项目(十三) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.socket、tcp、http之間的協議
戳我跳轉


2.了解一下HTTP協議相關名詞概念
戳我跳轉


3.HTTPS協議及密碼學基礎名字
戳我跳轉


4.初見Libcurl庫
戳我跳轉1
戳我跳轉2

  • libcurl簡介
    libcurl是一個跨平臺的網絡協議庫,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 協議。libcurl同樣支持HTTPS證書授權,HTTP POST, HTTP PUT, FTP 上傳, HTTP基本表單上傳,代理,cookies,和用戶認證

    庫下載https://github.com/curl/curl/releases/tag/curl-7_71_1

  • libcurl的使用
    調用curl_global_init()初始化libcurl
    調用curl_easy_init()函數得到 easy interface型指針
    調用curl_easy_setopt()設置傳輸選項
    根據curl_easy_setopt()設置的傳輸選項,實現回調函數以完成用戶特定任務
    調用curl_easy_perform()函數完成傳輸任務
    調用curl_easy_cleanup()釋放內存


5.libcurl等第三方庫的通用編譯方法

首先打開上述庫下載網址

下載圖中文件,并且傳輸到ubuntu中進行解壓


進入解壓后的文件夾后,有各種使用介紹,README,doc下文件,
全都是英文,可以進行閱讀,我們要快速開發,也可以借助百度去查看函數的使用,這樣更方便,具體參考上文中引用的文章
還可以去看一下dosc文件夾下的INSTALL.md
我們主要參考Unix 安裝

使用命令

./configure --prefix=$PWD/_install make make install

此時就可以看到當前目錄下面有_install文件夾了


6.代碼測試

首先編寫demo1.c

#include <stdio.h> #include <curl/curl.h> #define true 1 #define false 0 typedef int bool;bool getUrl(char *filename) {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){//curl_easy_setopt(curl, CURLOPT_PROXY, "10.99.60.201:8080");// 代理curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);// 改協議頭curl_easy_setopt(curl, CURLOPT_URL,"http://www.baidu.com");curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); //將返回的http頭輸出到fp指向的文件curl_easy_setopt(curl, CURLOPT_HEADERDATA, fp); //將返回的html主體數據輸出到fp指向的文件res = curl_easy_perform(curl); // 執行if (res != 0) {curl_slist_free_all(headers);curl_easy_cleanup(curl);}fclose(fp);return true;} } bool postUrl(char *filename) {CURL *curl;CURLcode res;FILE *fp;if ((fp = fopen(filename, "w")) == NULL)return false;curl = curl_easy_init();if (curl){curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "/tmp/cookie.txt"); // 指定cookie文件curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "&logintype=uid&u=xieyan&psw=xxx86"); // 指定post內容//curl_easy_setopt(curl, CURLOPT_PROXY, "10.99.60.201:8080");curl_easy_setopt(curl, CURLOPT_URL, " http://mail.sina.com.cn/cgi-bin/login.cgi "); // 指定urlcurl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);res = curl_easy_perform(curl);curl_easy_cleanup(curl);}fclose(fp);return true; } int main(void) {getUrl("/tmp/get.html");postUrl("/tmp/post.html"); }

編譯:需要鏈接庫

可以看到生成了a.out

使用命令./a.out執行

這里要設置程序共享庫位置

export LD_LIBRARY_PATH=./curl-7.71.1/_install/lib/

再次使用命令./a.out執行即可

使用命令:

vi /tmp/get.html

就可以看到獲取下來的百度網頁的html了


7.API的詳細使用看上面的幾個鏈接

上一篇:智能家居項目(十二)
下一篇:智能家居項目(十四)

總結

以上是生活随笔為你收集整理的智能家居项目(十三)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。