《鸿蒙HarmonyOS网络编程》直播答疑

系统 OpenHarmony
文章由鸿蒙社区产出,想要了解更多内容请前往:51CTO和华为官方战略合作共建的鸿蒙技术社区https://harmonyos.51cto.com/#zz

[[353875]]

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com/#zz

1. 许老师,3861在STA模式下如何获取本机的IP地址,可以修改hostname吗,就是在路由器上显示的名称?

答:可以用Hi3861 SDK提供的netifapi_netif_get_addr接口,获取本机的IP地址;

可以用Hi3861 SDK提供的netifapi_set_hostname接口,设置主机名称(路由器配置界面上可以查看到);

2. 今天上课所讲的是属于南向的通信,通过之前的公开课我大概理解了北向开发之间的实时互联,南北之间实现实时互联的一个逻辑是什么?

答:目前来说,南北向之间的互联,有两种实现方式:

1. 使用鸿蒙的“分布式软总线”,优点是软总线本身已经实现了设备发现、传输层安全等特性,可以比较方便的实现安全、可靠的互联;限制是,对端设备也必须是搭载鸿蒙鸿蒙系统或者HMS Core的Android配备(必须是华为的设备);

2. 使用传统的网络协议,例如TCP/UDP/MQTT等;优点是,对端设备只要支持TCP/IP协议即可,可以是任意OS,任意形态,不一定是华为设备,不一定是手机;缺点是,需要开发者自己实现设备发现、连接管理、传输层安全等特性,开发难度和工作量较大;

3. 请问鸿蒙系统支持以太网,WIFI多网络共存,是否支持优先级控制?请问支持最新的wifi6吗?

答:LwIP支持多网口,鸿蒙网络协议栈用的是LwIP,是支持WiFi以太网共存的,比如3516开发板。目前不支持wifi6。

4. 请问老师刚开始讲课时提到,鸿蒙的API跟海思的API都提供了 wifi不同模式,那么在代码里面的体现方式有什么不一样吗?

答:最直观的区别是命名风格,鸿蒙API命名是大驼峰,海思API是下划线。

5. Harmony OS所带的TCP/IP协议栈和LwIP的比较?

答:鸿蒙带的就是LwIP,只不过有一些修改;海思Hi3861下的lwip添加了一些新的接口例如DHCP服务端等;

liteos-a上的lwip是socket接口的内核实现,对上接口是glibc风格的,和其他Unix系统基本一致。

6. 怎样在hi3516用js写app,调用硬件的能力?像上网,摄像头,喇叭?

答:目前开源的openharmony,js引擎使用的JerryScript,使用硬件能力需要:

1. 借助JerryScript的C扩展,实现JS调用C代码(具体可以参考JerryScript项目的C扩展文档:https://jerryscript.net/ext-reference-module/,其中最重要的是jerry_create_external_function这个接口);

2. hi3516上面的话,ace框架对JerryScript的C扩展做了一层封装,在ace框架的封装之上实现扩展,相比直接使用JerryScript的C扩展要容易一些;

3. 在C扩展接口的实现中,用C语言实现硬件的访问和控制;

7. 请问许老师,如果鸿蒙3861控制机器人,是不是先编写STA链接WIFI,在写UDP绑定端口得代码,然后发送指令?

答:是这样的思路,具体实施过程可能需要查阅机器人相关的SDK文档。

8. 请问3861和智能音箱该怎么结合呢?例如天猫精灵,打开卧室灯光?

答:天猫精灵有SDK,具体信息可以在他们的SDK页面上了解。

9. 这个bsd socket跟一般PC上的socket编程有什么不一样的地方么?

答:一样的,Socket API最早来源于BSD Unix发行版,所以也叫BSD Socket。

10. 请问老师,鸿蒙中主要是异步编程嘛?和go的异步模型有什么区别?

答:鸿蒙支持异步编程,但不是主要的方式;少部分API接口是异步的,大部分是同步的。go的异步是由协程(goroutine)和管道(channel)实现的CSP(Communicating Sequential Processes)模型;鸿蒙目前还没有支持协程,但是支持进程和线程(liteos-a上两者都支持,liteos-m上只支持线程)。

11. 可以应用到物联网么?比如农业/畜牧业?

答:可以的

12. 支持鸿蒙系统4G/5G的开发板型号是什么?

答:目前还有没有支持4G/5G的鸿蒙系统开发板。

13. 鸿蒙的liteos-a内核成熟后会不会不再使用linux内核?

答:应该不会,liteos-a和linux内核目标设备的资源等级不同,linux用来支持系统资源更丰富的芯片平台,未来一段时间应该是会并行演进的。

14. 鸿蒙跟liteos有什么区别?

答:鸿蒙是完整的OS,liteos只是内核,两者关系类似于Linux发行版(如Debian、Ubuntu)和Linux内核的关系。

15. 鸿蒙OS的开源程度?开源到什么程度,是100%开源吗?

答:9月10号的开发者大会上有开源路线图(可以在网上搜到回放),目前不是100%开源,下一步会开源的是鸿蒙的Linux内核。

16. Harmony的优先级范围,如何处理优先级反转问题?

答:目前liteos-m和liteos-a的优先级有32个,最高是0,最低是31;“优先级反转问题”LiteOS里面有优先级继承来规避这个问题,但是应用程序使用信号量之类时还是需要细致和小心。

17. 请问老师注册的任务是如何执行的?

答:启动过程中执行的,具体源码解析可以取社区里面看连志安老师之前发过一篇帖子。

18. 必须用windows开发么?可以用linux开发么?

答:不是必须的,可以用Linux开发,但是目前烧录工具都是Windows版的,在Linux上需要使用Wine运行烧录工具。

19. HarmonyOS使用什么开发环境?

答:南向开发用的是VSCode + DevEco Device Tool,北向用的是DevEco Studio;

20. 鸿蒙OS能够实现跨端应用吗?

答:可以实现。

21. 鸿蒙OS开发应用能够支持热加载吗?

答:目前开源的代码里面还不支持热加载。

22. 鸿蒙OS开发应用有没有大小限制?

答:有一定限制,主要受限于内核和设备本身的内存闪存等硬件资源,例如目前Hi3516开发板有1G RAM,内核的DDRMEMSIZE 定义的是 512M;Hi3518芯片集成64M RAM,Hi3861芯片集成352 KB SRAM。

23. 鸿蒙OS适合于开发离线应用吗?

答:可以开发离线应用,但鸿蒙支持分布式特性(分布式软总线,分布式调度等),更适合于开发多端协同的应用。

24. HarmonyOS这用的是什么开发语言,要如何玩起来,可以用来解决生活中什么问题?

答:南向开发用的是C/C++,北向开发用的是Java/JavaScript,可以用在智能家居之类的应用场景中。

25. 编译文件gn和Makefile相比有什么特别之处?

gn是两阶段的构建,先gn将.gn文件转为.ninja描述的依赖关系文件,再用ninja命令执行实际的构建过程。

特别之处——gn的语法是C风格的(作用域、判断、循环等),对于有C系列语言基础的程序员更友好。

26. 这个用的哪些库?

LwIP —— 一个轻量级的TCP/IP协议栈

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com/#zz

 

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2020-11-25 11:42:15

HarmonyOS

2020-11-20 09:45:19

HarmonyOS

2020-11-19 11:43:26

HarmonyOS

2021-06-24 14:35:16

鸿蒙HarmonyOS应用

2020-11-19 11:36:24

HarmonyOS

2020-11-09 10:04:40

鸿蒙

2021-09-28 10:02:26

鸿蒙HarmonyOS应用

2021-04-07 09:50:20

鸿蒙HarmonyOS应用

2020-11-12 09:44:43

鸿蒙

2020-10-22 10:08:06

韦东山STM32MP157鸿蒙

2022-08-25 21:46:51

网络通讯应用开发

2021-03-16 15:37:53

鸿蒙HarmonyOS应用

2022-10-11 15:26:16

网络编程鸿蒙

2020-10-09 12:25:42

鸿蒙

2020-11-05 11:38:54

HarmonyOS

2020-11-09 11:56:49

HarmonyOS

2021-01-04 11:44:05

鸿蒙HarmonyOSAbilitySlic

2020-11-10 10:00:10

HarmonyOS

2021-06-25 15:04:31

鸿蒙HarmonyOS应用

2020-11-17 11:48:44

HarmonyOS
点赞
收藏

51CTO技术栈公众号