OpenHarmony 网络管理-Socket连接

ops/2024/10/22 10:48:14/

介绍

本示例主要演示了Socket在网络通信方面的应用,展示了Socket在两端设备的连接验证、聊天通信方面的应用。

效果预览

使用说明

1.搭建服务器环境:修改服务器脚本中的服务端IP地址,与本机IP地址保持一致,修改完成后双击运行脚本(端口号不必修改,与客户端工程中的端口保持一致即可)。

2.运行成功后为阻塞状态,等待客户端连接成功后会有相应提示。

3.打开应用,点击用户选择框选择要登录的用户(不同客户端保持用户选择不一致),点击协议选择框选择通信协议(与运行的服务器一致),并输入另一个设备的IP地址(如果是TCP和TLS,则输入服务端IP地址),点击登录按钮进入创建房间用户页面(两个设备都要依次执行此步骤)。

4.在两台设备都成功连上服务器后,在其中一个设备上点击创建房间按钮,任意输入房间号,另一个设备会收到邀请进入房间的信息弹框,点击确定按钮后,两个设备进入聊天页面。

5.在其中一个设备上输入聊天信息并点击发送按钮后,另一个设备的聊天页面会收到该聊天消息。

6.点击顶部标题栏左侧的返回图标按钮,则返回创建房间页面。

7.以上运行完成后如需再次创建房间请重启客户端和服务端进行调试。

工程目录

/Socket
├── entry             # 主entry模块目录
│   └── src
│       ├── main
│           ├── ets                                # ets模块目录
│               ├── components                     # 组件目录
│                   ├── ChatComponent.ets          # 聊天组件
│                   ├── CreateRoomDialog.ets       # 创建房间弹窗
│                   ├── InvitationDialog.ets       # 邀请进入房间弹窗
│                   ├── SelectAgreementDialog.ets  # 选择协议弹窗
│                   ├── SelectUserDialog.ets       # 选择用户弹窗
│                   ├── ToolComponent.ets          # 工具面板组件
│               ├── controller                     # 
│                   ├── LoginController.ts         # 负责与服务器的连接和接发消息
│               ├── data                           # 
│                   ├── ChatBox.ts                 # 聊天组件对应实体
│                   ├── DataSource.ts              # 数据源实体
│                   ├── ToolData.ts                # 工具面板对应实体
│               ├── entryability                
│               ├── model                          #  
│                   ├── Socket.ts                  # 负责创建相应Socket实例
│                   ├── SocketFactory.ts           # Socket工厂
│               ├── pages                          # 
│                   ├── CreateRoom.ets             # 创建房间页面
│                   ├── NewIndex.ets               # 聊天首页
│                   ├── NewLogin.ets               # 连接服务器页面
│               ├── socket                         # tcp\tls\udp
│               ├── utils                          # 工具类目录
│               ├── Constants.ts                   # 定义UI事件常量

具体实现

  • UDP Socket:使用UDP Socket实现文本传输,无需搭建服务器,对端直接交流。代码:UdpSocket.ts。
  • TCP Socket:使用TCP Socket实现文本传输和公共通知事件转发,需要Python脚本搭建TCP服务器,公共通知用于来起音频通话应用。代码:TcpSocket.ts,服务器代码:TCP_Server.py。
  • TLS Socket:使用TLS Socket实现文本传输,需要Python脚本搭建TLS服务器,服务器和客户端需要同一套证书文件。代码:TlsSocket.ts,服务器代码:TLS_Server.py。

相关权限

网络权限: ohos.permission.INTERNET
获取WIFI信息的权限: ohos.permission.GET_WIFI_INFO

依赖

  1. windows上启动socket服务端,模拟消息转发服务器服务器目录
  2. 需要使用音频通话示例启动语音通话功能

约束与限制

  1. 本示例仅支持标准系统上运行,支持设备:RK3568。

  2. 本示例为Stage模型,仅支持API9版本SDK,版本号:3.2.11.10,镜像版本号: OpenHarmony 4.0.7.5。

  3. 本示例需要使用DevEco Studio 3.1 Release (Build Version: 3.1.0.500, built on April 28, 2023)才可编译运行。

  4. 本示例在启动前需搭建服务端环境,成功启动相应服务端后再运行客户端,服务端脚本(server_python)需要在Python 3.8.5版本下运行(需与客户端处于同一局域网)。

  5. TCP和TLS脚本使用同一端口,不可同时运行,在使用某一类型的协议前运行对应协议的服务端脚本即可;TLS脚本需与证书文件(certificate_file)存在于同级非中文路径目录。

  6. 该示例运行测试完成后,再次运行需要重新启动服务端和客户端。

下载

如需单独下载本工程,执行如下命令:

git init
git config core.sparsecheckout true
echo code/BasicFeature/Connectivity/StageSocket/ > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master

码牛课堂也为了积极培养鸿蒙生态人才,让大家都能学习到鸿蒙开发最新的技术,针对一些在职人员、0基础小白、应届生/计算机专业、鸿蒙爱好者等人群,整理了一套纯血版鸿蒙(HarmonyOS Next)全栈开发技术的学习路线。大家可以进行参考学习:https://qr21.cn/FV7h05

①全方位,更合理的学习路径
路线图包括ArkTS基础语法、鸿蒙应用APP开发、鸿蒙能力集APP开发、次开发多端部署开发、物联网开发等九大模块,六大实战项目贯穿始终,由浅入深,层层递进,深入理解鸿蒙开发原理!

②多层次,更多的鸿蒙原生应用
路线图将包含完全基于鸿蒙内核开发的应用,比如一次开发多端部署、自由流转、元服务、端云一体化等,多方位的学习内容让学生能够高效掌握鸿蒙开发,少走弯路,真正理解并应用鸿蒙的核心技术和理念。

③实战化,更贴合企业需求的技术点
学习路线图中的每一个技术点都能够紧贴企业需求,经过多次真实实践,每一个知识点、每一个项目,都是码牛课堂鸿蒙研发团队精心打磨和深度解析的成果,注重对学生的细致教学,每一步都确保学生能够真正理解和掌握。

为了能让大家更好的学习鸿蒙(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://qr21.cn/FV7h05

大厂鸿蒙面试题::https://qr18.cn/F781PH

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

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


http://www.ppmy.cn/ops/6036.html

相关文章

[阅读笔记23][JAM]JOINTLY TRAINING LARGE AUTOREGRESSIVE MULTIMODAL MODELS

这篇论文是24年1月发表的,然后是基于的RA-CM3和CM3Leon这两篇论文。它所提出的JAM结构系统地融合了现有的文本模型和图像生成模型。 主要有两点贡献,第一点是提出了融合两个模型的方法,第二点是为混合模型精心设计的指令微调策略。 下图是一个…

使用Flask和Flask-JWT-Extended保护API免受跨站请求攻击

在本文中,我们将探讨如何使用Flask和Flask-JWT-Extended库来保护您的API免受跨站请求攻击(CSRF)。我们将首先简要介绍CSRF攻击的概念,然后详细说明如何使用Flask-JWT-Extended库来保护您的API。 什么是跨站请求攻击(C…

大数据学习的第三天

文章目录 学习大数据命令的方式查看文件拷贝文件的方式添加数据的方式 出现了问题移动文件 hadoop工作流程和工作机制的方式namenodedatanodesecondarynamenode(主节点) 学习大数据命令的方式 查看文件 hadoop fs -cat /test/2.txt下载文件 hadoop fs -get -f /test/2.txt-f …

Mysql 和 PostgreSQL 到底选啥?

当我深入探讨MySQL和PostgreSQL这两个著名的开源数据库时,我们不仅发现它们在功能、性能和用例方面存在明显的差异,同时也能看出它们各自在特定场景下的独特优势。选择哪一个往往取决于项目的具体需求、团队的熟悉度以及未来的扩展计划。 在这篇文章中&…

总结:css中水平居中

css水平居中功能很常用,但一直没有系统的总结过,今天来总结水平下常见的方式: 1. 文本或内联元素的居中: 使用 text-align: center; 属性可以让内部的文本和内联元素在容器中水平居中。 .container {text-align: center; }2. 块…

类与对象零碎知识点

目录 一、构造函数相关知识点补充 1.构造函数体赋值 2.初始化列表 3.explicit关键字 二、static成员 三、友元 1.友元函数 2.友元类 一、构造函数相关知识点补充 1.构造函数体赋值 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量…

探索设计模式的魅力:开启智慧之旅,AI与机器学习驱动的微服务设计模式探索

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,坚持默默的做事。 ✨欢迎加入探索AI与机器学习驱动的微服务设计模式之旅✨ 亲爱的科技爱好者们,有没…

广东海洋大学成功部署(泰迪智能科技)大数据人工智能实验室建设

广东海洋大学简称广东海大,坐落于广东省湛江市,是国家海洋局与广东省人民政府共建的省属重点建设大学、广东省高水平大学重点学科建设高校、粤港澳高校联盟成员 ,入选卓越农林人才教育培养计划,是教育部本科教学水平评估优秀院校。…