- 博客(15)
- 收藏
- 关注
原创 【网络socket】温度上报客户端
socket通信客户端socket函数代码实现socket函数int socket(int domain,int type,int protocol);参数:domain:指定发送通信的域 可取值:AF_UNIX:本地主机通信,与IPC类似 AF_INET:Internet地址IPV4协议 AF_INET6:Internet地址IPV6协议type:指定socket类型 可取值:SOCK_STREAM(流套接字)SOCK_DGRAM(数据报套接字)、SOCK_RAW
2022-01-21 19:12:59
710
原创 【网络socket】基于poll和epoll通信温度上报
网络socket通信poll函数epoll函数poll代码实现epoll代码实现poll函数poll是Linux中的字符设备驱动中的一个函数,poll本质上和select没有区别,它将用户传入的数组拷贝到内核空间,然后查询每个fd对应的设备状态,如果设备就绪则在设备等待队列中加入一项并继续遍历,如果遍历完所有fd后没有发现就绪设备,则挂起当前进程,直到设备就绪或者主动超时,被唤醒后它又要再次遍历fd。这个过程经历了多次无谓的遍历。int poll(struct pollfd *fds, nfds_t
2022-01-21 19:05:16
519
原创 【socket】线程通信-服务器上报温度
线程通信介绍线程常用线程函数代码实现介绍线程线程是一条执行路径,是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位,一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。线程由CPU独立调度执行,在多CPU环境下就允许多个线程同时运行。同样多线程也可以实现并发操作,每个请求分配一个线程来处理。一个正在运行的软件(如迅雷)就是一个进程,一个进程可以同时运行多个任务( 迅雷软件可以同时下载多个文件,每个下载任务就是一个线程), 可以简单的认为进程是
2022-01-21 17:07:45
872
原创 【socket】基于socket下进程上报温度
进程温度通信fork系统调用代码实现fork系统调用fork()函数又叫计算机程序设计中的分叉函数,fork是一个很有意思的函数,它可以建立一个新进程,把当前的进程分为父进程和子进程,新进程称为子进程,而原进程称为父进程。fork调用一次,返回两次,这两个返回分别带回它们各自的返回值,其中在父进程中的返回值是子进程的PID,而子进程中的返回值则返回 0。因此,可以通过返回值来判定该进程是父进程还是子进程。还有一个很奇妙的是:fork函数将运行着的程序分成2个(几乎)完全一样的进程,每个进程都启动一个从代
2022-01-21 16:53:05
800
原创 【socket】基于socket使用select上报温度
select使用select函数select流程图服务端代码实现select函数select监视并等待多个文件描述符的属性发生变化,它监视的属性分3类,分别是readfds(文件描述符有数据到来可读)、 writefds(文件描述符可写)、和exceptfds(文件描述符异常)。调用后select函数会阻塞,直到有描述符就绪(有数据可读、可写、 或者有错误异常),或者超时( timeout 指定等待时间)发生函数才返回。当select()函数返回后,可以通过遍历 fdset,来找到 究竟是哪些文件描述符
2022-01-21 16:20:09
814
原创 【MQTT】使用MQTT.fx上报温度到腾讯云
1.打开腾讯云官网,注册并登录.2.登录之后点击右上角的控制台点进去3.在搜索框[物联网通信],点击进入4.点击创建新产品5.选择普通产品,名称随便,选择证书认证,选择json格式在认证方式这,我们一点要选择证书认证,因为证书认证为非对称加密方式,而密钥认证方式为对称加密方式,并且MQTT.fx不支持对称加密PSK6.在设备列表下,选择添加新设备7.名称设备,限制设备密钥,后面需要的8.打开MQTT.fx 目前还不知道IP,端口,账号密码等等.需要查看官方文档9.ip是:产品
2022-01-20 20:42:08
4882
2
原创 【MQTT】使用MQTT上报温度阿里云
MQTT上报温度到阿里云前言iniparser配置文件 和 cJSON格式cJSON流程图配置信息发布端代码实现运行结果前言在上几篇文章中我们用MQTT.fx模拟客户端实现了与阿里云物联网平台的双向通信,接下来我们自己动手编程使用mosquitto库实现一个发布端。iniparser配置文件 和 cJSON格式iniparser介绍与阿里云进行通信时,我们需要如下一些信息,例如在使用MQTT.fx时:阿里云配置和MQTT.fx使用在上篇文章中阿里云配置文件另外之前发布和订阅的topic也
2022-01-19 19:49:13
7085
原创 【MQTT】sqlite3的使用
sqlite3安装sqlite3sqlite3库函数代码实现安装sqlite3我们从下载页面,SQLi官网从源代码区下载然后在Linux下安装sqlite3#下载wget https://www.sqlite.org/2020/sqlite-autoconf-3310100.tar.gz#解压tar -xzvf sqlite-autoconf-3310100.tar.gzsqlite3库函数1. 打开/创建数据库int sqlite3_open(const char *dbname,s
2022-01-19 16:22:32
887
原创 【MQTT】iniparser库的安装和使用
iniparser库iniparser库介绍下载库iniparser中的APIdictionary中的一些API测试代码iniparser库介绍iniparser是针对INI文件的解析器。ini文件则是一些系统或者软件的配置文件。iniparser库的API可以对ini文件(配置文件)进行解析、设置、删除等操作。基本组成单元:key 或者 称之为 property, 每个key都有一个名称(name)和对应的值(value),例如:host = iot-06z00i99uliom9a.mqtt.io
2022-01-18 19:59:10
681
原创 【MQTT】cJSON的安装和使用
cJSON的使用cJSON的简介JSON 名称/值对JSON 数字JSON 对象JSON 数组cJSON库下载cJSON库函数测试代码cJSON的简介cJSON是一个超轻巧,携带方便,单文件,简单的可以作为ANSI-C标准的JSON解析器。我们在使用JSON格式时,如果只是处理简单的协议,可以依据JSON格式,通过对字符串的操作来进行解析与创建。然而随着协议逐渐复杂起来,经常会遇到一些未考虑周全的地方,需要进一步的完善解析方法,此时,使用比较完善的JSON解析库的需求就提出来了。基于方便引用的考
2022-01-18 19:27:06
1472
1
原创 【MQTT】阿里云实现MQTT物联网平台通信
物联网环境搭建1.首先进入阿里云官网注册并登录你的账号。2.点击控制台。3.在产品与服务下面搜索物联网平台4.点击公共实例5.进去后,点击左边的产品,然后创建产品6.点击创建产品,可以看到下面图,名称随便,选择自定义品类,节点选择直连设备,下面不变.7.前去添加设备8.点击添加设备,出现添加设备,二个空都随便填9.查看设备证书10.查看设备证书和MQTT连接参数,用写字本记录下来,后面要要用到的.11.回到产品,点击功能定义,下面有个编辑草稿点击进入12.找到添加标
2022-01-18 17:02:28
6122
原创 【MQTT】基于mosquitto的学习和使用
文章目录前言一、MQTT简介MQTT特性MQTT协议原理MQTT协议数据包结构二、安装MQTT1.mosquitto简介2.安装mosquitto库2.常用MQTT库函数三.代码实现前言MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提..
2022-01-18 15:31:50
12698
2
原创 socket通信编程
socket简介网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“端口”可以唯一标识主机中的应用程(进程)。这样利用三元组(ip地址,协议, 端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。使用TCP/IP协议的应用程序通常采用应用编程接口:UNIX BSD的套接字(socket)来实现网络进程之间的通信。就目前而言,几乎所有的应用程序都是采用socket,而现在又是网络时代,网络中进程通信是无处不在,这就是我为什么说“一切皆socket”。TCP/IP协议族包
2021-12-02 21:54:45
1846
原创 在Linux下文件夹简单io使用
在linux下,一切皆文件。当文件被打开时,会返回文件描述符用于操作该文件,从shell中运行一个进程,默认会有3个文件描述符存在(0、1、2); 0表示标准输入,1表示标准输出,2表示标准错误。一个进程当前有哪些打开的文件描述符可以通过/proc/进程ID/fd目录查看在文件夹下的系统调用int mkdir(const char *pathname,mode_t mode)创建文件夹int rmdir(const char *pathname);删除文件夹DIR.
2021-11-26 21:03:02
328
原创 在Linux下的文件简单IO的使用
系统调用系统调用: 操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务 为什么用户程序不能直接访问系统内核提供的服务为了更好地保护内核空间,将程序的运行空间分为 内核空间 和 用户空间(也就是常称的内核态和用户态),它们分别运行在不同的级别上 在逻辑上是相互隔离的 。 因此 用户进程在通常情况下不允许访问内核数据 ,也无法使用内核函数,它们只能在用户空间操作用户数据 ,调用用户空间的函数 。进行系统调用时 ,程序运行空间从用户空间进入内核空间
2021-11-26 15:50:49
1118
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人