• Home
Name Date Size #Lines LOC

..--

BUILD.gnD12-May-20241 KiB2926

MakefileD12-May-20241.6 KiB4931

README.mdD12-May-202411.3 KiB203134

demo_entry_cmsis.cD12-May-20242 KiB7645

demo_entry_posix.cD12-May-2024899 289

net_common.hD12-May-20241.4 KiB4828

net_demo.hD12-May-20241.6 KiB5331

net_params.hD12-May-20241.1 KiB4018

udp_client_test.cD12-May-20242.5 KiB6238

wifi_connecter.cD12-May-20244.3 KiB146104

wifi_connecter.hD12-May-2024818 266

README.md

1# HiSpark WiFi-IoT 鸿蒙套件样例开发--网络编程(udpclient)
2
3![hihope_illustration](https://gitee.com/hihopeorg/hispark-hm-pegasus/raw/master/docs/figures/hihope_illustration.png)
4
5[HiSpark WiFi-IoT鸿蒙开发套件](https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w5003-23341819265.1.bf644a82Da9PZK&id=622343426064&scene=taobao_shop) 首发于HDC 2020,是首批支持HarmonyOS 2.0的开发套件,亦是鸿蒙官方推荐套件,由润和软件HiHope量身打造,已在鸿蒙社区和广大鸿蒙开发者中得到广泛应用。
6
7![wifi_iot](https://gitee.com/hihopeorg/hispark-hm-pegasus/raw/master/docs/figures/wifi_iot.png)
8
9## netcat简介
10
11### netcat 是什么?
12
13netcat是一个非常强大的网络实用工具,可以用它来调试TCP/UDP应用程序;
14
15### netcat 如何安装?
16
17Linux上可以使用发行版的包管理器安装,例如Debian/Ubuntu上:
18
19* `sudo apt-get install netcat`
20
21Windows上,MobaXterm工具上也可以用 `apt-get install netcat` 安装;
22
23### netcat 如何使用?
24
25开始之前,先简单介绍一下 netcat 的几种用法:
26
271. TCP服务端模式: `netcat -l 5678` ,会启动一个TCP服务器,监听`5678`端口,你可以换成其他端口;
282. TCP客户端模式: `netcat localhost 5678`, `localhost`是目标主机参数,可以换成其他你想要连接的主机(主机名、IP地址、域名都可以),`5678`是端口;
29    * 你如果在同一台机器的两个终端中分别执行上述两条命令,它们两者之间就会建立连接一条TCP连接,此时你在其中一个终端上输入字符,敲回车就会发送到另一个终端中;
303. UDP服务端模式: `netcat -u -l 6789`, 没错,只需要加一个`-u`参数,就可以启动一个UDP服务端;
314. UDP客户端模式: `netcat -u localhost 6789`,
32    * 类似的,在同一台机器的两个终端中分别执行上述两条命令,他们两者之间也可以收发消息,只不过是UDP报文;
33
34
35
36
37## LwIP简介
38
39### LwIP是什么?
40
41> A Lightweight TCP/IP stack
42> 一个轻量级的TCP/IP协议栈
43
44详细介绍请参考LwIP项目官网:https://savannah.nongnu.org/projects/lwip/
45
46### LwIP在openharmony上的应用情况
47
48目前,openharmony源码树有两份LwIP:
49
501. third_party/lwip
51    * 源码形式编译
52    * 供liteos-a内核使用
53    * 还有一部分代码在kernel/liteos_a中,一起编译
542. vendor/hisi/hi3861/hi3861/third_party/lwip_sack
55    * hi3861-sdk的一部分
56    * 静态库形式编译
57    * 不可修改配置
58    * 可以查看当前配置(vend
59
60
61
62## 下载源码
63
64建议将本教程的源码下载到鸿蒙源码树的顶层目录,即和`applications`、`build`等目录平级的地方:
65
66* 执行命令`git clone https://gitee.com/hihopeorg/HarmonyOS-IoT-Application-Development.git`
67
68
69
70## 文件说明
71
72文件:
73
74| 文件名             | 说明                                                        |
75| ------------------ | ----------------------------------------------------------- |
76| BUILD.gn           | 鸿蒙构建脚本,支持Hi3861、Hi3518、Hi3516开发板              |
77| demo_entry_cmsis.c | 鸿蒙liteos-m程序入口,支持Hi3861                            |
78| demo_entry_posix.c | 鸿蒙liteos-a和Unix系统程序入口,Hi3516、Hi3518、PC          |
79| Makefile           | Unix系统构建脚本,支持Linux/Mac OS                          |
80| net_common.h       | 系统网络接口头文件                                          |
81| net_demo.h         | demo脚手架头文件                                            |
82| net_params.h       | 网络参数,包括WiFi热点信息,服务器IP、端口信息              |
83| tcp_client_test.c  | TCP客户端                                                   |
84| tcp_server_test.c  | TCP服务端                                                   |
85| udp_client_test.c  | UDP客户端                                                   |
86| udp_server_test.c  | UDP服务端                                                   |
87| wifi_connecter.c   | 鸿蒙WiFi STA模式API的封装实现文件,比鸿蒙原始接口更容易使用 |
88| wifi_connecter.h   | 鸿蒙WiFi STA模式API的封装头文件,比鸿蒙原始接口更容易使用   |
89
90
91
92## Linux主机实验指南
93
94### 编译测试程序
95
96使用如下命令进行编译:
97
981. `make` 编译测试程序,该命令会生成4个可执行文件和几个.o文件
992. `make clean`删除可执行程序和.o文件
100
101### 运行测试程序
102
103Linux系统可以在同一台机器上,使用多个终端进行测试;
104
105* TCP客户端测试:
106   1. 在一个终端中使用netcat启动一个TCP服务端:`netcat -l 5678`;
107   2. 在另一个终端中启动TCP客户端测试程序:`./tcp_client_test 5678 127.0.0.1` ;
108   3. 在netcat终端中应该会出现TCP客户端测试程序发来的:`Hello`,输入`World`并回车,`World`将会发送到测试程序所在终端;
109* TCP服务端测试:
110   1. 在一个终端中启动TCP服务端测试程序:`./tcp_server_test 5678` ;
111   2. 在另一个终端中使用netcat启动一个TCP客户端,并尝试连接测试程序:`netcat 127.0.0.1 5678`;
112   3. 在netcat终端中输入`Hello`并回车,终端应该会再输出一行`Hello`,后面一行是TCP服务端测试程序发送回来的,同时终端上会有相关打印;
113* UDP客户端测试:
114   1. 在一个终端中使用netcat启动一个UDP服务端:`netcat -u -l 5678`;
115   2. 在另一个终端中启动UDP客户端测试程序:`./udp_client_test 5678 127.0.0.1` ;
116   3. 在netcat终端中应该会出现UDP客户端测试程序发来的`Hello.`,输入`World`并回车,`World`将会发送到测试程序所在终端;
117* UDP服务端测试:
118   1. 在一个终端中启动UDP服务端测试程序:`./udp_server_test 5678` ;
119   2. 在另一个终端中使用netcat启动一个UDP客户端,并尝试连接测试程序:`netcat -u 127.0.0.1 5678`;
120   3. 在netcat终端中输入`Hello.`并回车,终端应该会再输出一行`Hello.`,后面一行是UDP服务端测试程序是发送回来的,同时终端上会有相关打印;
121
122
123
124## Hi3861开发板实验指南
125
126### 准备网络环境
127
128在Hi3861开发板上运行上述四个测试程序之前,需要先准备网络环境:
129
1301. 准备一个无线路由器,
1312. 将Linux系统的PC连接到这个无线路由器,
132   * 如果是虚拟机运行的Linux系统,需要通过网线连接路由器,并且将虚拟机网口设置为“桥接网卡”,确保**能够从路由器分到IP地址**(这一点非常重要,因为默认是NAT模式,只能通过虚拟机访问外部环境,外部环境无法通过网络访问虚拟机);
133
134### 修改网络参数
135
136在Hi3861开发板上运行上述四个测试程序之前,需要根据你的无线路由、Linux系统IP修改`net_params.h`文件的相关代码:
137
138* PARAM_HOTSPOT_SSID 修改为你的热点名称
139* PARAM_HOTSPOT_PSK 修改为你的热点密码;
140* PARAM_SERVER_ADDR 修改为你的Linux主机IP地址;
141
142### 编译和烧录测试程序
143
144在Hi3861开发板上运行上述四个测试程序,需要分别编译、烧录程序;
145
1461. 需要修改`BUILD.gn`代码,取消你想要执行的测试程序的注释:
147   * 编译TCP客户端测试程序,取消 `sources = ["tcp_client_test.c"]` 的注释,保留其余三行的`sources`注释;
148   * 编译TCP服务端测试程序,取消 `sources = ["tcp_server_test.c"]` 的注释,保留其余三行的`sources`注释;
149   * 编译UDP客户端测试程序,取消 `sources = ["udp_client_test.c"]` 的注释,保留其余三行的`sources`注释;
150   * 编译UDP服务端测试程序,取消 `sources = ["udp_server_test.c"]` 的注释,保留其余三行的`sources`注释;
1512. 确认你已经修改了hi3861开发板的编译配置文件`build/lite/product/wifiiot.json`:
152   * `"//applications/sample/wifi-iot/app"`替换为:`"//HarmonyOS-IoT-Application-Development:app"`
1533. 使用`python build.py wifiiot`进行编译;
1544. 使用DevEco Device Tool或者HiBurn将二进制程序烧录到Hi3861开发板上;
1555. 烧录成功后暂时不要复位程序;
156
157
158
159### 运行测试程序
160
161Hi3861开发板上运行测试程序的操作流程和Linux上大体相同,只是Linux终端执行测试程序变成了——开发板复位后自动运行;
162
163* TCP客户端测试:
164  1. 在Linux终端中使用netcat启动一个TCP服务端:`netcat -l 5678`;
165  2. 连接开发板串口,复位开发板,板上程序启动后,首先会连接WiFi热点,然后会尝试连接到Linux上用netcat启动的TCP服务端;
166  3. 在Linux终端中应该会出现开发板上TCP客户端通过发来的`Hello`,输入`World`并回车,`World`将会发送到开发板上,同时开发板的串口会有相关打印;
167* TCP服务端测试:
168  1. 重新修改BUILD.gn,放开`sources = ["tcp_server_test.c"]`的注释,保留其他三行的注释,重新编译、烧录到开发板上;
169  2. 连接开发板串口,复位开发板,板上程序启动后,会首先连接WiFi热点,然后会启动TCP服务端,并监听`5678`端口;
170     * 这里需要从串口日志上查看开发板的IP地址,下一步操作需要用到
171  3. 在Linux终端中使用netcat启动一个TCP客户端,并尝试连接到开发板:`netcat board_ip 5678`,其中`board_ip`是开发板的IP地址;
172  4. 在Linux终端中输入`Hello`并回车,终端应该会再输出一行`Hello`,后面一行是开发板上TCP服务端序发送回来的,同时开发板的串口会有相关打印;
173* UDP客户端测试:
174  1. 重新修改BUILD.gn,放开`sources = ["udp_client_test.c"]`的注释,保留其他三行的注释,重新编译、烧录到开发板上;
175  2. 在Linux终端中使用netcat启动一个UDP服务端:`netcat -u -l 5678`;
176  3. 连接开发板串口,复位开发板,板上程序启动后,首先会连接WiFi热点,然后会尝试连接到Linux上用netcat启动的UDP服务端;
177  4. 在Linux终端中应该会出现UDP客户端测试程序发来的`Hello.`,输入`World`并回车,`World`将会发送到开发板上,同时开发板的串口会有相关打印;
178* UDP服务端测试:
179  1. 重新修改BUILD.gn,放开`sources = ["udp_server_test.c"]`的注释,保留其他三行的注释,重新编译、烧录到开发板上;
180  2. 连接开发板串口,复位开发板,板上程序启动后,会首先连接WiFi热点,然后会启动UDP服务端,并监听`5678`端口;
181  3. 在Linux终端中使用netcat启动一个UDP客户端,并尝试连接到开发板:`netcat -u 127.0.0.1 5678`;
182  4. 在Linux终端中输入`Hello.`并回车,终端应该会再输出一行`Hello.`,后面一行是UDP服务端测试程序是发送回来的,同时开发板的串口会有相关打印;
183
184
185
186### 【套件支持】
187
188##### 1. 套件介绍  http://www.hihope.org/pro/pro1.aspx?mtt=8
189
190##### 2. 套件购买  https://item.taobao.com/item.htm?id=622343426064&scene=taobao_shop
191
192##### 3. 技术资料
193
194- Gitee码云网站(OpenHarmony Sample Code等) **https://gitee.com/hihopeorg**
195
196- HiHope官网-资源中心(SDK包、技术文档下载)[**www.hihope.org**](http://www.hihope.org/)
197
198##### 4. 互动交流
199
200- 润和HiHope鸿蒙技术交流-微信群(加群管理员微信13605188699,发送文字#申请加入润和官方鸿蒙群#,予以邀请入群)
201- HiHope开发者社区-论坛 **https://bbs.elecfans.com/group_1429**
202- 润和HiHope鸿蒙售后服务群(QQ:980599547)
203- 售后服务电话(025-52668590)