• OpenHarmony网络协议通信c-ares [交叉编译]异步解析器库


    简介

    c-ares是异步解析器库,适用于需要无阻塞地执行 DNS 查询或需要并行执行多个 DNS 查询的应用程序。

    下载安装

    直接在OpenHarmony-SIG仓中搜索c-ares并下载。

    使用说明

    以OpenHarmony 3.1 Beta的rk3568版本为例

    1. 将下载的c-ares库代码存在以下路径:./third_party/c-ares

    2. 修改添加依赖的编译脚本,路径:/developtools/bytrace_standard/ohos.build

    
    {
      "subsystem": "developtools",
      "parts": {
        "bytrace_standard": {
          "module_list": [
            "//developtools/bytrace_standard/interfaces/innerkits/native:bytrace_core",
            "//developtools/bytrace_standard/bin:bytrace_target",
            "//developtools/bytrace_standard/bin:bytrace.cfg",
            "//developtools/bytrace_standard/interfaces/kits/js/napi:bytrace",
            "//third_party/c_ares:c_ares_target"
          ],
          "inner_kits": [
            {
              "type": "so",
              "name": "//developtools/bytrace_standard/interfaces/innerkits/native:bytrace_core",
              "header": {
                "header_files": [
                  "bytrace.h"
                ],
                "header_base": "//developtools/bytrace_standard/interfaces/innerkits/native/include"
              }
            }
          ],
          "test_list": [
            "//developtools/bytrace_standard/bin/test:unittest"
          ]
        }
      }
    }
    
    • 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
    1. 编译:./build.sh --product-name rk3568 --ccache

    2. 生成库文件和一些可执行测试文件,路径:out/rk3568/developtools/profiler

    接口说明

    1. ares对channel进行初始化: ares_init()
    2. 销毁channel,释放内存,关闭打开的socket: ares_destroy(self.channel)
    3. 初始化channel,options,optmask: ares_init_options(&channel, &options, optmask)
    4. 设置dns请求服务器,设置完成需要free掉c_servers的内存空间: ares_set_servers(self.channel, cares.ares_addr_node* c_servers)
    5. ares处理完成,返回DNS解析的信息: dns_callback()
    6. 获取ares channel使用的FD: ares_fds()
    7. 有事件发生,交由ares处理: ares_process()
    8. 传递给c-ares channal和回调: ares_gethostbyaddr()

    约束与限制

    支持OpenHarmony API version 8 。

    目录结构

    |---- c-ares
    |     |---- ci
    |     |---- docs                         #资源文件
    |     |---- include                      #头文件
    |     |---- m4                           #预处理文件
    |     |---- src
    |           |---- lib
    |                 |---- ares__close_sockets.c   #关闭TCP和UDP连接
    |                 |---- ares__get_hostent.c     #获取area hostent
    |                 |---- ares__read_line.c       #将文件中的一行读取到动态分配的缓冲区
    |                 |---- ares__readaddrinfo.c    #读取地址信息
    |                 |---- ares__sortaddrinfo.c    #对地址进行排序,并重新排列链表
    |                 |---- ares_cancel.c           #取消请求
    |                 |---- ares_fds.c              #获取使用的FD
    |                 |---- ares_search.c           #area搜索
    |     |---- test                         #单元测试文件
    |     |---- README.md                    #安装使用方法
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

    《鸿蒙开发学习手册》:

    如何快速入门:https://qr21.cn/FV7h05

    1. 基本概念
    2. 构建第一个ArkTS应用
    3. ……

    开发基础知识:https://qr21.cn/FV7h05

    1. 应用基础知识
    2. 配置文件
    3. 应用数据管理
    4. 应用安全管理
    5. 应用隐私保护
    6. 三方应用调用管控机制
    7. 资源分类与访问
    8. 学习ArkTS语言
    9. ……

    基于ArkTS 开发:https://qr21.cn/FV7h05

    1. Ability开发
    2. UI开发
    3. 公共事件与通知
    4. 窗口管理
    5. 媒体
    6. 安全
    7. 网络与链接
    8. 电话服务
    9. 数据管理
    10. 后台任务(Background Task)管理
    11. 设备管理
    12. 设备使用信息统计
    13. DFX
    14. 国际化开发
    15. 折叠屏系列
    16. ……

    鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

    鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

    1.项目开发必备面试题
    2.性能优化方向
    3.架构方向
    4.鸿蒙开发系统底层方向
    5.鸿蒙音视频开发方向
    6.鸿蒙车载开发方向
    7.鸿蒙南向开发方向

  • 相关阅读:
    HTML5实现拖放
    关于web前端大作业的HTML网页设计——我的班级网页HTML+CSS+JavaScript
    ASEMI整流桥GBJ2510参数:拆析其关键性能特点
    【Unity-Cinemachine相机】虚拟相机旋转Composer属性详解
    bandit agent下棋AI(python编写) 通过强化学习RL 使用numpy
    Unity——URP相机详解
    openarena
    简单上手Vuex
    【CSDN第五期竞赛】说说自己的感受吧
    java经典面试题总结
  • 原文地址:https://blog.csdn.net/maniuT/article/details/137969083