# Harmony OS 网络编程 实验指南
## netcat简介
### netcat 是什么?
netcat是一个非常强大的网络实用工具,可以用它来调试TCP/UDP应用程序;
### netcat 如何安装?
Linux上可以使用发行版的包管理器安装,例如Debian/Ubuntu上:
* `sudo apt-get install netcat`
Windows上,MobaXterm工具上也可以用 `apt-get install netcat` 安装;
### netcat 如何使用?
开始之前,先简单介绍一下 netcat 的几种用法:
1. TCP服务端模式: `netcat -l 5678` ,会启动一个TCP服务器,监听`5678`端口,你可以换成其他端口;
2. TCP客户端模式: `netcat localhost 5678`, `localhost`是目标主机参数,可以换成其他你想要连接的主机(主机名、IP地址、域名都可以),`5678`是端口;
* 你如果在同一台机器的两个终端中分别执行上述两条命令,它们两者之间就会建立连接一条TCP连接,此时你在其中一个终端上输入字符,敲回车就会发送到另一个终端中;
3. UDP服务端模式: `netcat -u -l 6789`, 没错,只需要加一个`-u`参数,就可以启动一个UDP服务端;
4. UDP客户端模式: `netcat -u localhost 6789`,
* 类似的,在同一台机器的两个终端中分别执行上述两条命令,他们两者之间也可以收发消息,只不过是UDP报文;
## LwIP简介
### LwIP是什么?
> A Lightweight TCP/IP stack
> 一个轻量级的TCP/IP协议栈
详细介绍请参考LwIP项目官网:https://savannah.nongnu.org/projects/lwip/
### LwIP在openharmony上的应用情况
目前,openharmony源码树有两份LwIP:
1. third_party/lwip
* 源码形式编译
* 供liteos-a内核使用
* 还有一部分代码在kernel/liteos_a中,一起编译
2. vendor/hisi/hi3861/hi3861/third_party/lwip_sack
* hi3861-sdk的一部分
* 静态库形式编译
* 不可修改配置
* 可以查看当前配置(vend
## 下载源码
建议将本教程的源码下载到鸿蒙源码树的顶层目录,即和`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主机实验指南
### 编译测试程序
使用如下命令进行编译:
1. `make` 编译测试程序,该命令会生成4个可执行文件和几个.o文件
2. `make clean`删除可执行程序和.o文件
### 运行测试程序
Linux系统可以在同一台机器上,使用多个终端进行测试;
* TCP客户端测试:
1. 在一个终端中使用netcat启动一个TCP服务端:`netcat -l 5678`;
2. 在另一个终端中启动TCP客户端测试程序:`./tcp_client_test 5678 127.0.0.1` ;
3. 在netcat终端中应该会出现TCP客户端测试程序发来的:`Hello`,输入`World`并回车,`World`将会发送到测试程序所在终端;
* TCP服务端测试:
1. 在一个终端中启动TCP服务端测试程序:`./tcp_server_test 5678` ;
2. 在另一个终端中使用netcat启动一个TCP客户端,并尝试连接测试程序:`netcat 127.0.0.1 5678`;
3. 在netcat终端中输入`Hello`并回车,终端应该会再输出一行`Hello`,后面一行是TCP服务端测试程序发送回来的,同时终端上会有相关打印;
* UDP客户端测试:
1. 在一个终端中使用netcat启动一个UDP服务端:`netcat -u -l 5678`;
2. 在另一个终端中启动UDP客户端测试程序:`./udp_client_test 5678 127.0.0.1` ;
3. 在netcat终端中应该会出现UDP客户端测试程序发来的`Hello.`,输入`World`并回车,`World`将会发送到测试程序所在终端;
* UDP服务端测试:
1. 在一个终端中启动UDP服务端测试程序:`./udp_server_test 5678` ;
2. 在另一个终端中使用netcat启动一个UDP客户端,并尝试连接测试程序:`netcat -u 127.0.0.1 5678`;
3. 在netcat终端中输入`Hello.`并回车,终端应该会再输出一行`Hello.`,后面一行是UDP服务端测试程序是发送回来的,同时终端上会有相关打印;
## Hi3861开发板实验指南
### 准备网络环境
在Hi3861开发板上运行上述四个测试程序之前,需要先准备网络环境:
1. 准备一个无线路由器,
2. 将Linux系统的PC连接到这个无线路由器,
* 如果是虚拟机运行的Linux系统,需要通过网线连接路由器,并且将虚拟机网口设置为“桥接网卡”,确保**能够从路由器分到IP地址**(这一点非常重要,因为默认是NAT模式,只能通过虚拟机访问外部环境,外部环境无法通过网络访问虚拟机);
### 修改网络参数
在Hi3861开发板上运行上述四个测试程序之前,需要根据你的无线路由、Linux系统IP修改`net_params.h`文件的相关代码:
* PARAM_HOTSPOT_SSID 修改为你的热点名称
* PARAM_HOTSPOT_PSK 修改为你的热点密码;
* PARAM_SERVER_ADDR 修改为你的Linux主机IP地址;
### 编译和烧录测试程序
在Hi3861开发板上运行上述四个测试程序,需要分别编译、烧录程序;
1. 需要修改`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`注释;
2. 确认你已经修改了hi3861开发板的编译配置文件`build/lite/product/wifiiot.json`:
* `"//applications/sample/wifi-iot/app"`替换为:`"//HarmonyOS-IoT-Application-Development:app"`
3. 使用`python build.py wifiiot`进行编译;
4. 使用DevEco Device Tool或者HiBurn将二进制程序烧录到Hi3861开发板上;
5. 烧录成功后暂时不要复位程序;
### 运行测试程序
Hi3861开发板上运行测试程序的操作流程和Linux上大体相同,只是Linux终端执行测试程序变成了——开发板复位后自动运行;
* TCP客户端测试:
1. 在Linux终端中使用netca
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
HarmonyOS-IoT-Application-Development-master.zip (45个子文件)
HarmonyOS-IoT-Application-Development-master
CC_BY-NC-SA.md 2KB
NOTICE 298B
BUILD.gn 2KB
05_network
BUILD.gn 3KB
udp_server_test.c 3KB
net_params.h 2KB
demo_entry_posix.c 2KB
wifi_connecter.h 2KB
net_demo.h 3KB
udp_client_test.c 3KB
wifi_connecter.c 5KB
Makefile 2KB
net_common.h 2KB
README.md 17KB
tcp_server_test.c 4KB
demo_entry_cmsis.c 3KB
tcp_client_test.c 3KB
03_sensing
BUILD.gn 2KB
environment_demo.c 5KB
aht20.h 2KB
oled_demo.c 3KB
oled_fonts.h 15KB
aht20.c 8KB
colorful_light_demo.c 5KB
README.md 3KB
oled_ssd1306.c 6KB
oled_ssd1306.h 2KB
02_device_control
BUILD.gn 2KB
beeper_music_demo.c 4KB
traffic_light_demo.c 4KB
README.md 3KB
LICENSE 1KB
01_envsetup
hos_deveco_device_tool_install.md 7KB
hos_source_code_download_and_compile.md 10KB
README.md 1KB
hos_use_hiburn_download_firmware.md 4KB
00_hardware_docs
HiSpark_WiFi_IoT_DevKits_Hardware_Quick_Reference.png 973KB
HiSpark_WiFi_IoT_DevKits_Hardware_Quick_Reference.xmind 219KB
README.md 107B
.gitignore 286B
04_wifi
wifi_scan_demo.c 5KB
BUILD.gn 2KB
wifi_hotspot_demo.c 6KB
wifi_connect_demo.c 5KB
README.md 11KB
共 45 条
- 1
资源评论
m0_72731342
- 粉丝: 2
- 资源: 1832
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Screenshot_2024-05-09-16-25-12-231_com.ss.android.ugc.aweme.jpg
- 834796943853388蕾の喵恋.apk
- 3DTiles.js
- stm32F103系列单片机433M无线解码程序
- 仓库管理系统文件:包含截图,SQL,源代码全套资源
- Text-2024-05-09 17-11-33.txt
- da_1715269209522..apk
- 上市公司-库存周转率、供应链效率数据集.dta
- NxShell-x64-win-1.9.5-202305200715 (1)
- tensorflow-gpu-2.2.0-cp38-cp38-win-amd64.whl
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功