上一篇文章进行了C语言API的讲解,本篇文章将在小熊派上进行实操。
1、小熊派-鸿蒙·叔(BearPi-HM Micro)一台。
2、已经配置好小熊派开发环境的电脑一台。
3、将小熊派接入到局域网。
配置wifi连接的配置文本–>编写TCP服务器的C文件 --> 配置BUILD.gn --> 将我们的代码添加编译–>编译烧录。
打开applications/BearPi/BearPi-HM_Micro/samples/communication/wpa_supplicant/config/wpa_supplicant.conf配置文件,修改ssid和psk为你自己家路由器或者手机热点的名字和密码。
我们在工程目录下/applications/BearPi/BearPi-HM_Micro/samples里面存放我们的代码。
目录结构如下:
复制
├─ tcp_http #源码目录 ├── BUILD.gn #编辑配置文件 └── tcp_http.c #网络通信源码
1.
2.
3.
本部分是整个TCP服务器实现的核心,打开我们创建的tcp_http.c文件,添加以下代码。为了方便测试代码的有效性,我们先拿TCP服务器做一个简单的网站,用到了一点点简单的HTTP协议。
复制
#include <stdio.h>#include <arpa/inet.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <unistd.h>#include <string.h>int main() { //1创建socket int socket_server = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); int opt = 1; setsockopt(socket_server,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof( opt ));//该函数解决端口占用问题 //2.绑定端口 struct sockaddr_in server_addr; memset(&server_addr,0,sizeof(struct sockaddr_in));//把结构体里面的数据清零 server_addr.sin_port = htons(80); server_addr.sin_addr.s_addr = htonl(INADDR_ANY);//任意ip都能访问此服务 server_addr.sin_family = AF_INET; bind(socket_server,(struct sockaddr*)&server_addr,sizeof(server_addr)); //3.监听端口 listen(socket_server,5);//5表示最大连接数 while(1){//4.进入阻塞状态struct sockaddr_in client_addr;int client_lenght = sizeof(client_addr);int client_id = accept(socket_server,(struct sockaddr*)&client_addr,&client_lenght);//5.读取客户端发来的消息char buffer[1024];recv(client_id,buffer,sizeof(buffer),0);printf("%s",buffer);//5.根据HTTP协议的格式,反馈一个网页给客户端const char buf[]="HTTP/1.1 200 OK\r\nDate: Fri, 22 May 2009 06:07:21 GMT\r\nContent-Type: text/html; charset=UTF-8\r\n\r\n<html><head></head><body><p>Hello Openharmony!</p></body></html>"; send(client_id,buf,sizeof(buf),0);//6.关闭套接字close(client_id); } return 0; }
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
复制
import("//build/lite/config/component/lite_component.gni")executable("tcp_http") {sources = ["tcp_http.c", ]include_dirs = [ ] }lite_component("net_app") {features = [":tcp_http", ] }
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
我们要将我们的代码加入到my_sample组件中,打开build/lite/components/applications.json。
添加图中的两条路径。
复制
# 进入下载路径cd ~/bearpi-hm_micro_small# 开始编译hb set# 输入当前路径. # 回车选择“bearpi-hm_micro”# 编译hb build -t notest --tee -f# 等待直到屏幕出现:build success字样,说明编译成功。
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
先复制出来编译好的镜像。
复制
cp out/bearpi_hm_micro/bearpi_hm_micro/OHOS_Image.stm32 applications/BearPi/BearPi-HM_Micro/tools/download_img/kernel/cp out/bearpi_hm_micro/bearpi_hm_micro/rootfs_vfat.img applications/BearPi/BearPi-HM_Micro/tools/download_img/kernel/cp out/bearpi_hm_micro/bearpi_hm_micro/userfs_vfat.img applications/BearPi/BearPi-HM_Micro/tools/download_img/kernel/
1.
2.
3.
复制再使用STM32CubeProgrammer烧录镜像,纯Linux开发环境参考我之前的教程,Windows混合开发环境请参考官方教程。
烧录成功后,切换拨码,进入到系统。
串口连接小熊派的ohos终端,首先要进行wifi配置,在终端输入以下命令配置wifi。
复制
./bin/wpa_supplicant -i wlan0 -d -c /etc/wpa_supplicant.conf
1.
输入此命令后大概等3分钟,等待小熊派连接上wifi。
通过以下命令查看是否分配到ip可以知道小熊派是否已经连接上了wifi。
复制
ifconfig
1.
如果有了IP表示已经连接上了wifi,我们接着运行我们写tcp服务器。
复制
cd bin/ #先进入到bin目录中 ./tcp_http #运行我们的程序
1.
2.
复制接着我们可以在我们同在一个局域网的电脑上,打开浏览器,输入小熊派的ip访问服务器。
浏览器能够成功显示“Hello Openharmony”,表示已经成功搭建好了TCP服务器。
大家可能关心一开始的与苹果siri联动的怎么实现,考虑大多数小伙伴的复现,先做了一个简单的http服务器,大家可以直接在浏览器上访问即可以调试。下篇文章会给大家最终实现的代码。希望大家能用网络通信,开发更多有意思的项目。