梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发

星如雪_梭如月
发布于 2022-7-25 13:58
浏览
0收藏

###本文章仅整理视频笔记及对一些地方的解释,如果想看详细内容,请在鸿蒙开发者学堂搜索鸿蒙设备开发###

###本文章图片来自视频后PDF文档,本文侧重代码讲解###

1.UDP客户端

1.1.UDP协议相关API

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

1.2.UDP客户端创建流程

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

1.3.实例代码

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

1.4.代码讲解

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

引入库,定义服务端端口号,定义要发送的内容

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

定义相关任务

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

创建结构体内部存储服务端相关信息,信息如上图,使用ipv4协议,端口号htons(8888),使用htons将主机字节顺序转换为网络字节顺序,详细请搜索htons函数,inet_addr将网络地址转换为二进制数字。连接wifi使用的是你想要连接的wifi的信息。

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

创建套接字,第一个参数ipv4协议,如果是AF_INET6则是ipv6协议,第二个参数是UDP数据报,如果是SOCK_STREAM则是TCP流。

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

将数据发送到服务端并接收返回的字符串,中间还有延迟,recvfrom经常处于阻塞态,只有你发送一个信息,它才返回一个信息。bzero清空recvBuf(接收的数据),发送函数第一个参数套接字,第二个发送的数据,第三个长度,第四个一般是0,第五个服务端信息,第六个,存储服务端信息的结构体大小。

 

最后关闭套接字

2.TCP服务端

2.1.TCP协议相关API

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

2.2.TCP服务端创建流程

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

2.3.实例代码梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

2.4.代码讲解

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

引入库并创建任务,定义端口号,最大监听数,服务端返回信息

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

定义服务端地址信息,客户端信息并连接wifi

接下来以公司前台转接电话为例进行讲解

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

公司买了个电话并且是ipv4,TCP流的电话,并且找了一张卡卡的信息中间几行,之后将卡插入电话中(bind绑定ip等)

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

招了个前台转接员最大转接数为第二个参数10个,之后开始工作,当有服务端请求时,转接的id为new_fd并打印转接成功。

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

客服进行回话,回话的人是前台转接的id,new_fd(不是套接字),之后进行接收客户端信息,返回客户端信息。

最后关闭转接。

3.TCP客户端

3.1.相关API

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

3.2.相关流程

与第二大点同

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

3.3.实例代码

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

3.4.代码讲解

TCP客户端只需要修改之前的UDP客户端代码即可,你可以选择将UDP客户端代码文件夹直接复制并粘贴到example,之后进行修改,这样之后也可以对UDP客户端代码进行复习,也可以选择直接修改UDP客户端代码。

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

将创建任务代码中的UDP全部改为TCP,你也可以不改。

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

创建套接字第二个参数改为TCP流,SOCK_STREAM

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

连接TCP服务端,UDP客户端没有,所以发送接收数据时需要写地址信息

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

将sendto的to去掉,recvfrom的from去掉,参数的地址信息去掉

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

不要忘了修改BUILD.gn

4.UDP服务端

4.1.相关接口

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

4.2.通信流程

与第一大点同

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

4.3.代码实例

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

4.4.代码讲解

UDP服务端只需要修改之前的TCP服务端代码即可,你可以选择将TCP服务端代码文件夹直接复制并粘贴到example,之后进行修改,这样之后也可以对TCP服务端代码进行复习,也可以选择直接修改TCP服务端代码。

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

对任务名进行修改

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

创建套接字第二个参数STREAM改为DGRAM

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

注释掉监听代码以及转接代码

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

在recv后加from,send后加to,new_fd改为套接字,后面都写上地址,并每一次循环清一次recvfrom

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

关闭的也是套接字。

5.MQTT客户端

5.1.MQTT介绍

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

5.2.paho MQTT文件介绍

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

5.3.paho MQTT相关接口函数

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

5.4.实例代码

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

5.5.代码讲解

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

引入库文件,定义最大接收,发送长度,创建相关任务

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

连接wifi,初始化网络NetworkInit,连接并打印。MQTTClient相当于套接字,创建了个client之后操作函数第一个参数经常用到这个。网络连接第二个参数需要与自己的主机ip一致。

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

初始化MQTT客户端,对相关客户端信息进行填写(版本等),之后连接MQTT,连接失败通过goto跳转到begin重新连接。

之后进行订阅,订阅失败返回begin,订阅函数第二个是订阅的主题,可以接收服务端发布的消息。

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

MQRTT发布相关代码,发布的主题,需要与服务端订阅的主题一致这样,服务端才能订阅客户端发布的信息。

 

 

mosquitto需要进行配置打开conf文件,通过查找快捷键搜索allow_an找到相关代码并修改

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

并且搜索listener修改为以下代码,位置可以通过下图第一行进行定位。

梅科尔工作室-看鸿蒙设备开发实战14天笔记(七)-网络应用开发-鸿蒙开发者社区

 

 

 

 

 

 

 

分类
已于2022-7-25 13:58:24修改
1
收藏
回复
举报
回复
    相关推荐