OpenHarmony三方库:stun-server

简介

stun是基于STUN协议的服务开源组件,它允许客户端获取NAT分配的外部IP地址和端口号,还可以识别NAT的行为类型。

效果展示

avatar

下载安装

ohpm install @ohos/stun

OpenHarmony ohpm环境配置等更多内容,请参考 如何安装OpenHarmony ohpm包 。

使用说明

代码依赖
import { StunServer, StunClient } from '@ohos/stun';
...
//创建并启动server
@State serverMessage: string = "Tip: Click 'node-stun-server' to display the server log";
stunServer: StunServer = null;
private createServer() {
  var self = this;
  if (self.stunServer) {
    return;
  }
  self.serverMessage = "";
  self.stunServer = new StunServer();
  self.stunServer.setServerMessageListener({ onMessageChanged(serverMessage: string) {
    self.serverMessage += serverMessage + "\n";
  } });
  self.stunServer.createServer(this.newDefaults);
}
...
//创建并启动client
@State clientMessage: string = "Tip: Click 'node-stun-client' to display the client log";
stunClient: StunClient = null;
private createClient() {
  var self = this;
  self.clientMessage = "";
  prompt.showToast({ message: "node-stun-client", duration: 3000 });
  if (!self.stunClient) {
    self.stunClient = new StunClient();
    self.stunClient.setClientMessageListener({ onMessageChanged(clientMessage: string) {
      self.clientMessage += clientMessage + "\n";
    } });
  }
  self.stunClient.createClient(this.clientAddress, this.serverInfo);
}
...

接口说明

  1. 创建STUN server

    createServer()

  2. 设置STUN server的消息回调接口

    public setServerMessageListener(onServerMessageListener: OnServerMessageListener)

  3. 监听来自客户端的STUN请求 listen()

  4. 关闭STUN server close()

  5. 创建STUN client createClient()

  6. 设置STUN client的消息回调接口 public setClientMessageListener(onClientMessageListener: OnClientMessageListener)

  7. 设置NAT的地址和端口 setServerAddr(addr, port)

  8. 开启NAT探测 start(option, cb)

  9. 获取映射的地址是否是本地地址 isNatted()

  10. 获取 STUN server返回的映射地址和端口 getMappedAddr()

  11. 获取NAT绑定类型 getNB()

  12. 获取节点过滤类型 getEF()

  13. 获取NAT类型的名称 getNatType()

  14. 获取在NAT探测期间测量的 RTT(往返时间) getRtt()

  15. 关闭STUN client close(callback)

约束与限制

在下述版本验证通过:

  • DevEco Studio 版本: 4.1 Canary(4.1.3.317)

  • OpenHarmony SDK:API11 (4.1.0.36)

目录结构

|---- stun  
|     |---- entry  # 示例代码文件夹
|     |---- library  # stun库文件夹
|           |---- src/main/ets/common
|                 |---- node-stun  
|                       |---- bin  # 对外提供的server和client调用接口
|                             |---- StunServer.ets  # 对外提供的server调用接口
|                             |---- StunClient.ets  # 对外提供的client调用接口
|                       |---- lib  # 关键代码
|                             |---- Server.ets  # server关键代码
|                             |---- Client.ets  # client关键代码
|                             |---- Const.ets   # 常量类
|                             |---- Logger.ets  # 处理log信息
|                             |---- Message.ets # 消息类
|                             |---- Utils.ets   # 工具类
|                       |---- Index.ets  # 封装创建lib中的server和client
|           |---- index.ets  # 对外接口
|     |---- README.md  # 安装使用方法 

最后

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。 

这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、OpenHarmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。

希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!

获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS NEXT学习资料

鸿蒙(HarmonyOS NEXT)最新学习路线

  •  HarmonOS基础技能

  • HarmonOS就业必备技能 
  •  HarmonOS多媒体技术

  • 鸿蒙NaPi组件进阶

  • HarmonOS高级技能

  • 初识HarmonOS内核 
  • 实战就业级设备开发

有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。

获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS NEXT学习资料

《鸿蒙 (OpenHarmony)开发入门教学视频》

《鸿蒙生态应用开发V2.0白皮书》

图片

《鸿蒙 (OpenHarmony)开发基础到实战手册》

OpenHarmony北向、南向开发环境搭建

图片

 《鸿蒙开发基础》

  • ArkTS语言
  • 安装DevEco Studio
  • 运用你的第一个ArkTS应用
  • ArkUI声明式UI开发
  • .……

图片

 《鸿蒙开发进阶》

  • Stage模型入门
  • 网络管理
  • 数据管理
  • 电话服务
  • 分布式应用开发
  • 通知与窗口管理
  • 多媒体技术
  • 安全技能
  • 任务管理
  • WebGL
  • 国际化开发
  • 应用测试
  • DFX面向未来设计
  • 鸿蒙系统移植和裁剪定制
  • ……

图片

《鸿蒙进阶实战》

  • ArkTS实践
  • UIAbility应用
  • 网络案例
  • ……

图片

 获取以上完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS NEXT学习资料

总结

总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。 

  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 Rust 编程语言来实现一个 STUN 客户端。STUN(Simple Traversal of UDP through NATs)是一种用于网络地址转换(NAT)穿透的协议。 下面是一个简单的示例代码,演示了如何使用 Rust 和 tokio 来实现一个基本的 STUN 客户端: ```rust use std::net::{SocketAddr, UdpSocket}; use tokio::runtime::Runtime; fn main() { // 设置 STUN 服务器的地址 let stun_server: SocketAddr = "stun.example.com:3478".parse().unwrap(); // 创建 UDP 套接字 let socket = UdpSocket::bind("0.0.0.0:0").expect("Failed to bind socket"); // 发送 STUN 请求 let mut buf = [0u8; 1024]; let request: [u8; 20] = [ 0x00, 0x01, 0x00, 0x00, 0x21, 0x12, 0xA4, 0x42, // STUN 请求头部 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // STUN 请求数据 0x00, 0x08, 0x00, 0x14, // STUN 请求数据长度 ]; socket .send_to(&request, stun_server) .expect("Failed to send STUN request"); // 接收 STUN 响应 let (recv_len, _) = socket.recv_from(&mut buf).expect("Failed to receive STUN response"); let response = &buf[..recv_len]; // 处理 STUN 响应 // 这里可以根据 STUN 协议解析 response 数据 println!("STUN response: {:?}", response); } ``` 这只是一个简单的示例,实际上你可能需要更多的代码来处理 STUN 协议的各种情况和错误处理。你可以使用其他 Rust 来帮助解析和处理 STUN 响应数据。 请注意,这个示例使用了 tokio 来实现异步网络编程。你需要在 `Cargo.toml` 文件中添加相应的依赖,例如: ```toml [dependencies] tokio = { version = "1", features = ["full"] } ``` 希望这个示例能对你有所帮助!如果你有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值