智能家居(调用libcurl编程访问百度主页)

2023-10-27

一 代码

#include <stdio.h>
#include <curl/curl.h>
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 ");   // 指定url
        curl_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");
}

二 解析

2.1 原代码为c++代码,而C语言中是没有bool数据类型的,所以要在头部进行宏定义,添加以下代码:

#define true 0
#define false 1
typedef unsigned int bool;

注意:1 这里的bool是一个数据类型,所以要用typedef定义;而0,1是具体的数据,所以用#define                定义;

        2 #define定义是不带分号的,而typedef结尾是要带分号的;

2.2报错解决方法一

保存退出后编译会出错

报错是链库问题,编译时要添加链库路径,用以下代码编译

gcc demo1.c -I ./curl-7.71.1/_install/include/ -L ./curl-7.71.1/_install/lib/ -lcurl 

其中-I 和-L 什么作用呢?

(1) -I
可以向 gcc 的头文件搜索路径中添加新的目录。
(2) -L
如果使用了不在标准位置的库文件,那么可以通过 -L 选项向 gcc 的库文件搜索路径中添加新的目录。

此时,还不能运行成功,需要设置程序共享库位置:

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

2.2报错解决方法二

        方法二相比方法一更加简单,所以推荐使用方法二

        其实最简单的办法是:sudo apt install libssl-dev  libcurl4 libcurl4-openssl-dev 

       再直接 gcc demo1.c -lcurl 即可。

三 结果查看

        可通过 vi /tmp/get.html 和 vi /tmp/post.html  查看访问网址的原码

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

智能家居(调用libcurl编程访问百度主页) 的相关文章

  • 智能家居HomeAssistant(二)Docker安装homeassistant

    目录 1 查找镜像 2 拉取镜像 3 查看镜像 4 启动镜像 5 查看容器运行状态 6 开机自动启动配置 7 自动重新启动配置 扩展 xff1a 下一篇MQTT配置 xff1a 智能家居HomeAssistant xff08 三 xff09
  • 智能家居(调用libcurl编程访问百度主页)

    一 代码 include
  • 网络编程知识预备(2) ——TCP三次握手与四次挥手、流量控制(滑动窗口)、拥塞控制、半连接状态、2MSL

    参考 浅显易懂的三次握手与四次挥手 作者 丶PURSUING 发布时间 2021 03 19 09 33 20 网址 https blog csdn net weixin 44742824 article details 114990198
  • 入坑nodemcu,从刷固件到点亮LED,读完这篇文章就够了

    今天进手了一块nodemcu 准备入坑 有兴趣的朋友们 跟着小智手机手学习如何刷Lua固件且运行第一个亮灯实例吧 nodemcu NodeMCU 是一个开源的物联网平台 它包含了可以运行在esp8266 Wi FiSoC芯片之上的固件 以及
  • 威联通NAS(QNAP)采用HybridMount挂载百度云网盘

    威联通之前一直不支持挂载百度云网盘 但最近更新了1 9 3761版本的HybridMount 发现已经支持了 下面简要介绍其设置过程 功能介绍 完成设置后 可以从威联通的File Station访问百度云帐户 还可以访问通过SMB NFS
  • 基于树莓派的智能家居开发项目总结

    目录 一 项目简单总结下 二 代码实现 1 主函数mainPro c 2 控制设备的头文件inputCommand h 3 外接设备的头文件controlDevices h 4 服务器sockeContrl c 5 语音模块voiceCon
  • 网络编程知识预备(5) ——libcurl库安装及其编程访问百度首页(断点续传)

    本文为学习笔记 整合课程内容以及下列文章 其中 libcurl函数库常用字段解读部分 参考博文 原文地址 作者 冬冬他哥哥 目录 Libcurl库简介 Libcurl等三方库的通用编译方法 三方库使用前通读方法 库的配置 编译 安装 调用l
  • AI和智能家居:打造智慧生活

    人工智能 AI 技术正在以惊人的速度渗透到我们的日常生活中 特别是在智能家居领域 AI技术的崭露头角 正为我们的生活带来更便捷 更智能的体验 为未来的智慧生活奠定了坚实基础 智能家居的奇妙世界 智能家居不再是科幻小说的幻想 而是正在迅速成为
  • 智能家居项目总结以及学习总结

    学习总结 是一段艰辛的路程 是一段值得回忆的经历 一切都是为了秋招 为了将来有更好的生活 为了能够成为一名嵌入式工程师 从熟悉的C语言 半吊子的数据结构和简单算法 linux下的IO操作 进线程编写 socket套接字的应用 QT和C 的学
  • ESP32-C2模组使用AT固件示例

    ESP32C2 AT固件使用 ESP32 C2模组 如图1 1所示 图1 1 ESP32 C2模组 ESP32 C2开发板 如图1 2所示 图1 2 ESP32 C2开发 方案亮点 1 完整的 Wi Fi 子系统 符合 IEEE 802 1
  • 基于STM32的多功能心电信号监测系统设计

    1 系统总体方案设计 系统由STM32F103微处理器模块 ADS1292R心电采集模块 LMT70体表温度传感器模块 ESP8266无线WiFi模块 MMA955L加速度计模块 系统电源 PC服务端等组成 STM32F103作为主控制器实
  • 全屋智能家居搭建初级指南(装修用户)

    环境 小M等智能设备 新装修用户 稳定网络环境 规划好电路布局 问题描述 全屋智能家居如何搭建 初级指南 装修用户 下面部分内容摘自小M智能家居 解决方案 一 装修中需要注意什么 句话概括 需在水电进场前考虑智能家居设计 主要准备两件事 铺
  • 智能家居之设备配网(理论篇)

    前言 记录杭州疫情 独自在杭州跨年了 不过也可以抽出点时间来写写博客分享一下 在这也要祝大家虎年大吉 本篇目标 介绍当前智能家居产品中 关于设备配网中用到的一些技术 配网的作用 现在家庭生活中 智能设备越来越多 大到手机 电脑 小到插座 灯
  • android EasyLink给wifi模块配网

    相关文章 博客 http blog csdn net u010924834 article details 49491349 本文使用的是庆科wifi模块 http developer mico io downloads 庆科的开发者地址
  • 【转载】浅谈蓝牙 Mesh 组网技术

    本文转载自 Eren https www erenship com posts 63c7 html 蓝牙技术联盟官方网址 https www bluetooth com zh cn 蓝牙技术联盟公众号 BluetoothSIG 蓝牙技术联盟
  • 智能家居 (2) ——设计模式的引入

    目录 设计模式的概念引入 工厂模式的实现 animal h mainPro c cat c dog c person c 工厂模式的功能验证 往期文章 设计模式的概念引入 工厂模式的实现 所有代码最好在Source Insight下编写 并
  • ESP32-C2开发板 Homekit烧录教程

    准备 1 1硬件ESP32 C2开发板 如图1 1所示 图1 1 ESP32 C2开发板 1 2软件 CozyLife APP可以在各大应用市场搜索下载 也可以扫描二维码下载如图1 2所示 HomeKit flash download to
  • STM32项目--基于STM32的办公室安保(智能家居)系统设计

    基于嵌入式系统的办公室安保系统设计 简介 设计一套基于STM32的办公室安防系统 系统内部包括门禁系统 灾害报警系统 人脸识别系统和交互中心四个子系统 门禁系统 主要实现对门禁卡的存储和读取并识别已存储卡片的信息并控制开门 如读取卡片为未存
  • 智能家居管制是怎么回事,智能家居出现了新赛道?

    为增进大家对智能家居的认识 本文将对智能家居 智能家居的管制以及智能家居新赛道予以介绍 智能家居 是现在的发展主流之一 也可以说 智能家居是这个时代的主题 为增进大家对智能家居的认识 本文将对智能家居 智能家居的管制以及智能家居新赛道予以介
  • PD SINK协议芯片系列产品介绍对比-ECP5701、FS312A、CH221K、HUSB238、AS225KL

    目录 一 ECP5701 二 FS312A 三 CH221K 四 HUSB238 五 AS225KL 在如今快节奏生活不断蔓延的背景下 人们对各种事情的处理也渐渐地开始要求在保证质量的情况下 不断加快 手机快充就是一个典型的例子 从开始的1

随机推荐

  • 基于keras的猫狗分类(小型卷积神经网络)

    背景 本文主要介绍猫狗分类问题 原型取自2013年的kaggle计算机竞赛 你可以从https www kaggle com c dogs vs cats data获取必要的数据集 或者寻找其他的镜像文件 数据集包含25000张猫狗图像 这
  • 设计模式(十一)外观模式

    外观模式是另一种结构型设计模式 当我们想要隐藏系统的复杂实现 想客户包含简单的使用接口的时候 就可以使用外观模式 我们需要创建一个外观类 提供要给用户暴露的方法 外观模式的优点就是用户和系统解耦 系统可以独立于用户修改 缺点就是用户虽然和系
  • 记一次 MyBatis常用到的动态sql

    一 SQL的动态拼接标签 if标签 where标签 choose when otherwise标签 set标签 trim标签 bind标签 sql和include标签 foreach标签 二 if标签 test中写判断条件 参数直接para
  • Windows系统在虚拟机上安装Linux系统操作步骤

    1 下载VM虚拟机 VM官网 VMware Workstation Player VMware Customer Connect 2 下载CentOS 7系统 下载好虚拟机以后 我们就可以下载阿里云的CentOS7镜像了 网址 centos
  • C++传递不定参函数

    定义不定参数函数 要用到下面这些宏 va start ap farg 初始化一个va list变量ap farg是第一个形参 va arg ap type 获取 下 一个type类型的参数 va end ap 结束使用ap C语言里编写不定
  • textarea显示全部内容支持高度自适应

    function readyNumber textarea each function this setAttribute style height this scrollHeight px overflow y hidden on inp
  • 江山如此多娇(图与文)—旅美散记之五

    自费自助的旅美行程匆匆 在几个城镇探亲访友之后 就近看了一些景点 浮光掠影 广实浅新 且把照片当节目 加以调侃作串联报幕词 与博友们共享 月光下的尼亚加拉大瀑布 阳光下的尼亚加拉大瀑布照片比较常见 这次碰巧看到了瀑布上的彩虹 见下图 这就是
  • 高斯噪声(gauss noise)

    概述 高斯噪声是指它的概率密度函数服从高斯分布 即正态分布 的一类噪声 与椒盐噪声相似 Salt And Pepper Noise 高斯噪声 gauss noise 也是数字图像的一个常见噪声 椒盐噪声是出现在随机位置 噪点深度基本固定的噪
  • 【python】Appium安卓padUI自动化

    Appium安卓padUI自动化踩的坑 总结如下 一 从native页面跳转到webview页面 获取链接并定位元素 方法一 通过Charles抓包 可以定位到pad跳转到的H5页面 获取页面地址 在pc端进行元素定位 方法二 在web c
  • 【牛客SQL】SQL16 统计出当前各个title类型对应的员工当前薪水对应的平均工资

    题目描述 描述 有一个员工职称表titles简况如下 有一个薪水表salaries简况如下 请你统计出各个title类型对应的员工薪水对应的平均工资avg 结果给出title以及平均工资avg 并且以avg升序排序 以上例子输出如下 示例1
  • Windows环境下配置Ceres(含Eigen、gflags、glog、merit、suitesparse)

    1 配置环境与源代码包 环境 Windows 8 1企业版 Visual Studio 2013 专业版X64 Cmake GUI 3 13 0 rc1 Ceres solver 1 14 0 下载地址 http ceres solver
  • @keyframes的应用

    目录 一 keyframes 二 hover和 keyframes 一 keyframes 1 keyframes能够创建动画 创建动画的原理是将一套 CSS 样式逐渐变化为另一套样式 2 animation属性控制动画的外观 animat
  • js块级作用域--理解

    在JavaScript中没有块级作用域的概念 这意味着在块级语句中定义的变量 实际上是包含在函数中的 而不是在语句中创建的 下面来看一个例子 function testdemo for var i 0 i lt 10 i alert i t
  • python爬取音乐并保存_python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中

    爬取TOP500的音乐信息 包括排名情况 歌曲名 歌曲时间 网页版酷狗不能手动翻页进行下一步的浏览 仔细观察第一页的URL 这里尝试将1改为2 再进行浏览 恰好是第二页的信息 再改为3 恰好是第三页的信息 多次尝试发现不同的数字即为不同的页
  • Transformer(李宏毅老师Transforme PPT截图)

    参考李宏毅老师Transformer 课程连接https www youtube com watch v ugWDIIOHtPA list PLJV el3uVTsOK ZK5L0Iv EQoL1JefRL4 index 61 Seq2se
  • java实现二维码识别(ZBar)

    要求 系统Centos7 x 第一步安装Cmake yum install y gcc gcc c wget wget https cmake org files v3 14 cmake 3 14 0 tar gz tar zxvf cma
  • IDEA生成jar工具包

    使用IDEA生成jar工具包 使用IDEA生成jar工具包 通过导入的方式在其它项目中使用 注意 此jar包是非执行jar包 只能作为工具包来使用 打包流程 1 点击 Build gt Build Module jar01 完成之后会生成
  • VS调试时无响应,卡顿,卡死的解决方案

    1 修改体调试设置 调试 gt 选项 gt 调试 gt 符号 去掉xxx服务器 勾选仅加载指定的模块 2 修改搜狗输入法 3 由于VS运行太久缓存太多 1 单击 开始 选择 运行 或者win r快捷键 2 键入 devenv exe res
  • mac下通过命令行查找文件

    直接在命令行中输入 mdfind name xxxx png 如果不知道完整的文件名称的话 只需要输入你记得的几个词就行
  • 智能家居(调用libcurl编程访问百度主页)

    一 代码 include