Name | Date | Size | #Lines | LOC | ||
---|---|---|---|---|---|---|
.. | - | - | ||||
BUILD.gn | D | 12-May-2024 | 1 KiB | 29 | 26 | |
Makefile | D | 12-May-2024 | 1.6 KiB | 49 | 31 | |
README.md | D | 12-May-2024 | 11.2 KiB | 203 | 134 | |
demo_entry_cmsis.c | D | 12-May-2024 | 2 KiB | 76 | 45 | |
demo_entry_posix.c | D | 12-May-2024 | 900 | 29 | 9 | |
net_common.h | D | 12-May-2024 | 1.4 KiB | 48 | 28 | |
net_demo.h | D | 12-May-2024 | 1.6 KiB | 53 | 31 | |
net_params.h | D | 12-May-2024 | 1.1 KiB | 40 | 18 | |
tcp_server_test.c | D | 12-May-2024 | 3.4 KiB | 89 | 58 | |
wifi_connecter.c | D | 12-May-2024 | 4.3 KiB | 148 | 104 | |
wifi_connecter.h | D | 12-May-2024 | 818 | 26 | 6 |
README.md
1# HiSpark WiFi-IoT 套件样例开发--网络编程(tcpserver) 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,是首批支持OpenHarmony 2.0的开发套件,亦是官方推荐套件,由润和软件HiHope量身打造,已在OpenHarmony社区和广大OpenHarmony开发者中得到广泛应用。 6 7![wifi_iot](https://gitee.com/hihopeorg/hispark-hm-pegasus/raw/master/docs/figures/2.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建议将本教程的源码下载到OpenHarmony源码树的顶层目录,即和`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)