Harmony OS 网络编程 实验指南
建议将本教程的源码下载到鸿蒙源码树的顶层目录,即和applications、build等目录平级的地方:
- 执行命令
git clone https://gitee.com/hihopeorg/HarmonyOS-IoT-Application-Development.git
文件说明
文件:
| 文件名 | 说明 |
|---|---|
| BUILD.gn | 鸿蒙构建脚本,支持Hi3861、Hi3518、Hi3516开发板 |
| demo_entry_cmsis.c | 鸿蒙liteos-m程序入口,支持Hi3861 |
| demo_entry_posix.c | 鸿蒙liteos-a和Unix系统程序入口,Hi3516、Hi3518、PC |
| Makefile | Unix系统构建脚本,支持Linux/Mac OS |
| net_common.h | 系统网络接口头文件 |
| net_demo.h | demo脚手架头文件 |
| net_params.h | 网络参数,包括WiFi热点信息,服务器IP、端口信息 |
| tcp_client_test.c | TCP客户端 |
| tcp_server_test.c | TCP服务端 |
| udp_client_test.c | UDP客户端 |
| udp_server_test.c | UDP服务端 |
| wifi_connecter.c | 鸿蒙WiFi STA模式API的封装实现文件,比鸿蒙原始接口更容易使用 |
| wifi_connecter.h | 鸿蒙WiFi STA模式API的封装头文件,比鸿蒙原始接口更容易使用 |
Linux主机实验指南
编译测试程序
使用如下命令进行编译:
make编译测试程序,该命令会生成4个可执行文件和几个.o文件make clean删除可执行程序和.o文件
运行测试程序
Linux系统可以在同一台机器上,使用多个终端进行测试;
- TCP客户端测试:
- 在一个终端中使用netcat启动一个TCP服务端:
netcat -l 5678; - 在另一个终端中启动TCP客户端测试程序:
./tcp_client_test 5678 127.0.0.1; - 在netcat终端中应该会出现TCP客户端测试程序发来的:
Hello,输入World并回车,World将会发送到测试程序所在终端;
- 在一个终端中使用netcat启动一个TCP服务端:
- TCP服务端测试:
- 在一个终端中启动TCP服务端测试程序:
./tcp_server_test 5678; - 在另一个终端中使用netcat启动一个TCP客户端,并尝试连接测试程序:
netcat 127.0.0.1 5678; - 在netcat终端中输入
Hello并回车,终端应该会再输出一行Hello,后面一行是TCP服务端测试程序发送回来的,同时终端上会有相关打印;
- 在一个终端中启动TCP服务端测试程序:
- UDP客户端测试:
- 在一个终端中使用netcat启动一个UDP服务端:
netcat -u -l 5678; - 在另一个终端中启动UDP客户端测试程序:
./udp_client_test 5678 127.0.0.1; - 在netcat终端中应该会出现UDP客户端测试程序发来的
Hello.,输入World并回车,World将会发送到测试程序所在终端;
- 在一个终端中使用netcat启动一个UDP服务端:
- UDP服务端测试:
- 在一个终端中启动UDP服务端测试程序:
./udp_server_test 5678; - 在另一个终端中使用netcat启动一个UDP客户端,并尝试连接测试程序:
netcat -u 127.0.0.1 5678; - 在netcat终端中输入
Hello.并回车,终端应该会再输出一行Hello.,后面一行是UDP服务端测试程序是发送回来的,同时终端上会有相关打印;
- 在一个终端中启动UDP服务端测试程序:
Hi3861开发板实验指南
准备网络环境
在Hi3861开发板上运行上述四个测试程序之前,需要先准备网络环境:
- 准备一个无线路由器,
- 将Linux系统的PC连接到这个无线路由器,
- 如果是虚拟机运行的Linux系统,需要通过网线连接路由器,并且将虚拟机网口设置为“桥接网卡”,确保能够从路由器分到IP地址(这一点非常重要,因为默认是NAT模式,只能通过虚拟机访问外部环境,外部环境无法通过网络访问虚拟机);
修改网络参数
在Hi3861开发板上运行上述四个测试程序之前,需要根据你的无线路由、Linux系统IP修改net_params.h文件的相关代码:
- PARAM_HOTSPOT_SSID 修改为你的热点名称
- PARAM_HOTSPOT_PSK 修改为你的热点密码;
- PARAM_SERVER_ADDR 修改为你的Linux主机IP地址;
编译和烧录测试程序
在Hi3861开发板上运行上述四个测试程序,需要分别编译、烧录程序;
- 需要修改
BUILD.gn代码,取消你想要执行的测试程序的注释:- 编译TCP客户端测试程序,取消
sources = ["tcp_client_test.c"]的注释,保留其余三行的sources注释; - 编译TCP服务端测试程序,取消
sources = ["tcp_server_test.c"]的注释,保留其余三行的sources注释; - 编译UDP客户端测试程序,取消
sources = ["udp_client_test.c"]的注释,保留其余三行的sources注释; - 编译UDP服务端测试程序,取消
sources = ["udp_server_test.c"]的注释,保留其余三行的sources注释;
- 编译TCP客户端测试程序,取消
- 确认你已经修改了hi3861开发板的编译配置文件
build/lite/product/wifiiot.json:"//applications/sample/wifi-iot/app"替换为:"//HarmonyOS-IoT-Application-Development:app"
- 使用
python build.py wifiiot进行编译; - 使用DevEco Device Tool或者HiBurn将二进制程序烧录到Hi3861开发板上;
- 烧录成功后暂时不要复位程序;
运行测试程序
Hi3861开发板上运行测试程序的操作流程和Linux上大体相同,只是Linux终端执行测试程序变成了——开发板复位后自动运行;
- TCP客户端测试:
- 在Linux终端中使用netcat启动一个TCP服务端:
netcat -l 5678; - 连接开发板串口,复位开发板,板上程序启动后,首先会连接WiFi热点,然后会尝试连接到Linux上用netcat启动的TCP服务端;
- 在Linux终端中应该会出现开发板上TCP客户端通过发来的
Hello,输入World并回车,World将会发送到开发板上,同时开发板的串口会有相关打印;
- 在Linux终端中使用netcat启动一个TCP服务端:
- TCP服务端测试:
- 重新修改BUILD.gn,放开
sources = ["tcp_server_test.c"]的注释,保留其他三行的注释,重新编译、烧录到开发板上; - 连接开发板串口,复位开发板,板上程序启动后,会首先连接WiFi热点,然后会启动TCP服务端,并监听
5678端口;- 这里需要从串口日志上查看开发板的IP地址,下一步操作需要用到
- 在Linux终端中使用netcat启动一个TCP客户端,并尝试连接到开发板:
netcat board_ip 5678,其中board_ip是开发板的IP地址; - 在Linux终端中输入
Hello并回车,终端应该会再输出一行Hello,后面一行是开发板上TCP服务端序发送回来的,同时开发板的串口会有相关打印;
- 重新修改BUILD.gn,放开
- UDP客户端测试:
- 重新修改BUILD.gn,放开
sources = ["udp_client_test.c"]的注释,保留其他三行的注释,重新编译、烧录到开发板上; - 在Linux终端中使用netcat启动一个UDP服务端:
netcat -u -l 5678; - 连接开发板串口,复位开发板,板上程序启动后,首先会连接WiFi热点,然后会尝试连接到Linux上用netcat启动的UDP服务端;
- 在Linux终端中应该会出现UDP客户端测试程序发来的
Hello.,输入World并回车,World将会发送到开发板上,同时开发板的串口会有相关打印;
- 重新修改BUILD.gn,放开
- UDP服务端测试:
- 重新修改BUILD.gn,放开
sources = ["udp_server_test.c"]的注释,保留其他三行的注释,重新编译、烧录到开发板上; - 连接开发板串口,复位开发板,板上程序启动后,会首先连接WiFi热点,然后会启动UDP服务端,并监听
5678端口; - 在Linux终端中使用netcat启动一个UDP客户端,并尝试连接到开发板:
netcat -u 127.0.0.1 5678; - 在Linux终端中输入
Hello.并回车,终端应该会再输出一行Hello.,后面一行是UDP服务端测试程序是发送回来的,同时开发板的串口会有相关打印;
- 重新修改BUILD.gn,放开
Hi3516开发板实验指南
准备网络环境
和在Hi3861开发板上运行测试程序类似,在Hi3516开发板上运行四个测试程序之前,需要先准备网络环境:
- 准备一个无线路由器,
- 将Linux系统的PC连接到这个无线路由器,
- 如果是虚拟机运行的Linux系统,需要通过网线连接路由器,并且将虚拟机网口设置为“桥接网卡”,确保能够从路由器分到IP地址(这一点非常重要,因为默认是NAT模式,只能通过虚拟机访问外部环境,外部环境无法通过网络访问虚拟机);
编译测试程序
-
确认你已经修改了Hi3516开发板的编译配置文件
build/lite/product/ipcamera_hi3516dv300.json:- 向
"//applications/sample/camera/app:camera_app"所在行之前添加一行配置:
{ "name": "net_test", "dir": "//HarmonyOS-IoT-Application-Development:app", "features":[] }, - 向
-
使用
python build.py ipcamera_hi3516dv300进行编译; -
编译成功后在
out/ipcamera_hi3516dv300/bin目录下会生成四个测试程序:
$ find out/ipcamera_hi3516dv300/ -name *_test
out/ipcamera_hi3516dv300/bin/udp_server_test
out/ipcamera_hi3516dv300/bin/udp_client_test
out/ipcamera_hi3516dv300/bin/tcp_client_test
out/ipcamera_hi3516dv300/bin/tcp_server_test
将测试程序转移到开发板上
有多种方式可以将测试程序从你的Linux主机转移到Hi3516开发板上:
-
重新烧写rootfs.img映像文件到开发板;
- 这种方式会刷写整个rootfs分区;
-
通过T-Flash拷贝;
- 先将上述四个测试程序从Linux主机拷贝到T-Flash卡上,
- 再将T-Flash卡从Linux主机上拔下来,插到Hi3516开发板上;
- 然后将测试程序从T-Flash卡中拷贝到开发板文件系统上;
-
通过网络和TFTP传输;
- 先确认Linux主机和开发板直接的IP地址在同一个网段;
- 可以用ping命令互相测试;
- 将Linux主机上的几个测试程序拷贝到tftp目录下;
- 在开发上,通过tftp命令从Linux主机下载测试程序;
- 先cd到一个有写权限的位置,例如 /usrdata/
- 执行tftp下载命令:
tftp -g -l tcp_client_test -r tcp_client_test $LINUX_IP,其中$LINUX_IP是你的Linux主机的IP地址
- 先确认Linux主机和开发板直接的IP地址在同一个网段;
运行测试程序
Hi3861开发板上运行测试程序的操作流程和Linux上几乎完全相同,只是Linux终端执行测试程序变成了——在开发板上的串口终端中执行;
- TCP客户端测试:
- 在Linux终端中使用netcat启动一个TCP服务端:
netcat -l 5678; - 在开发板串口终端中启动TCP客户端测试程序:
./tcp_client_test 5678 $LINUX_IP,其中$LINUX_IP是你的Linux主机的IP地址; - 在netcat终端中应该会出现TCP客户端测试程序发来的:
Hello,输入World并回车,World将会发送到测试程序所在终端;
- 在Linux终端中使用netcat启动一个TCP服务端:
- TCP服务端测试:
- 在开发板串口终端中启动TCP服务端测试程序:
./tcp_server_test 5678; - 在Linux终端中使用netcat启动一个TCP客户端,并尝试连接测试程序:
netcat $BOARD_IP 5678,其中$BOARD_IP是开发板的IP地址; - 在Linux终端中输入
Hello并回车,终端应该会再输出一行Hello,后面一行是开发板上TCP服务端测试程序发送回来的,开发板串口终端上会有相关打印;
- 在开发板串口终端中启动TCP服务端测试程序:
- UDP客户端测试:
- 在Linux终端中使用netcat启动一个UDP服务端:
netcat -u -l 5678; - 在开发板串口终端中启动UDP客户端测试程序:
./udp_client_test 5678 $LINUX_IP,其中$LINUX_IP是你的Linux主机的IP地址; - 在Linux终端中应该会出现UDP客户端测试程序发来的
Hello.,输入World并回车,World将会发送到开发板上,开发板串口终端上会有相关打印;
- 在Linux终端中使用netcat启动一个UDP服务端:
- UDP服务端测试:
- 在开发板串口终端中启动UDP服务端测试程序:
./udp_server_test 5678; - 在Linux终端中使用netcat启动一个UDP客户端,并尝试连接测试程序:
netcat -u $BOARD_IP 5678,其中$BOARD_IP是开发板的IP地址; - 在Linux终端中输入
Hello.并回车,终端应该会再输出一行Hello.,后面一行是UDP服务端测试程序是发送回来的,开发板串口终端上会有相关打印;
- 在开发板串口终端中启动UDP服务端测试程序:
Hi3518开发板实验指南
准备网络环境
和在Hi3861开发板上运行测试程序类似,在Hi3518开发板上运行四个测试程序之前,需要先准备网络环境:
- 准备一个无线路由器,
- 将Linux系统的PC连接到这个无线路由器,
- 如果是虚拟机运行的Linux系统,需要通过网线连接路由器,并且将虚拟机网口设置为“桥接网卡”,确保能够从路由器分到IP地址(这一点非常重要,因为默认是NAT模式,只能通过虚拟机访问外部环境,外部环境无法通过网络访问虚拟机);
Hi3518开发板连接WiFi热点
Hi3518连接WiFi热点需要使用wpa_supplicant和相关配置文件;
-
编译wap_supplicant程序:
-
打开编译wpa_supplicant编译配置:
- 修改配置文件
applications\sample\camera\communication\BUILD.gn中的features,向其中添加:
"wpa_supplicant:wpa_sample" - 修改配置文件
-
执行编译命令:
python build.py ipcamera_hi3518ev300
-
-
准备wap_supplicant配置文件;
country=GB
ctrl_interface=udp
network={
ssid="example" # 热点名称
# key_mgmt=NONE # for OPEN Access Point
psk="12345678" # 热点密码
}
-
将编译生成的wpa_supplicant程序和准备好的wpa_supplicant.conf拷贝到T-Flash卡,然后将T-Flash卡插到开发板上;
-
运行wpa_supplicant程序,开发板启动后,在串口终端中:
- 执行命令:
cd sdcard, 跳转到T-Flash卡所在目录, - 执行命令:
wpa_supplicant -i wlan0 -c wpa_supplicant.conf,如果配置文件中的热点名称和密码没错的话,将会连接上WiFi热点; - 执行命令:
ifconfig,查看网络配置信息,连接WiFi热点成功之后,可以查看到IP地址;
- 执行命令:
编译测试程序
和Hi3516开发板的操作流程一致,参考前面的描述;
将测试程序转移到开发板上
和Hi3516开发板的操作流程一致,参考前面的描述;
运行测试程序
和Hi3516开发板的操作流程一致,参考前面的描述;
为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05
《鸿蒙开发学习手册》:
如何快速入门:https://qr21.cn/FV7h05
- 基本概念
- 构建第一个ArkTS应用
- ……

开发基础知识:https://qr21.cn/FV7h05
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数HarmonyOS鸿蒙开发工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年HarmonyOS鸿蒙开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。


既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上HarmonyOS鸿蒙开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注鸿蒙获取)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上HarmonyOS鸿蒙开发知识点,真正体系化!**
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注鸿蒙获取)
[外链图片转存中…(img-UApvYLHg-1712839721905)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
更多推荐



所有评论(0)