当前位置: 首页 > news >正文

鸿蒙笔记--Socket

       这一节主要了解鸿蒙Socket通信,在鸿蒙系统中,Socket TCP通讯是一种常用的网络通信方式,它提供了可靠的、面向连接的数据传输服务。它主要用到@ohos.net.socket这个库;

constructTCPSocketInstance:创建一个 TCPSocket;
connect:连接目标服务器;
bind:绑定端口;
send:发送数据;
close:关闭连接;
on:打开对应事件的监听;
off:关闭对应事件的监听;

栗子:

export default class SocketUtils  {public static connect(host: string, mPort: number,data:string) {let socketTcp = socket.constructTCPSocketInstance();let localAddress = {address: host,family: 1,port: mPort}let tcpOptions = {address:localAddress,timeout:15000}console.log("connect >>>> tcpOptions:"+JSON.stringify(tcpOptions));let promise = socketTcp.connect(tcpOptions)promise.then(() => {console.log(" connect >>>> ok ");sendSocketData(socketTcp,data)}).catch(err => {console.log(" connect >>>> err:"+JSON.stringify(err));})}
}function sendSocketData(socketTcp: socket.TCPSocket, data: string) {let options ={data:JSON.stringify(data)}socketTcp.send(options,(err,data) => {if(err) {console.log(" sendSocketData >>>> err:"+JSON.stringify(err));} else {console.log(" sendSocketData >>>> success data :"+JSON.stringify(data));}})socketTcp.on("message",(message)=> {const content = StringUtils.arrayBuffer2String(message.message)console.log(" sendSocketData >>>> message content:"+content);})
}import util from '@ohos.util';
class StringUtils {string2Uint8Array1(value: string): Uint8Array {if (!value) return null;//let textEncoder = new util.TextEncoder();//获取点流并发出 UTF-8 字节流 TextEncoder 的所有实例仅支持 UTF-8 编码return textEncoder.encodeInto(value)}uint8Array2String(input: Uint8Array) {let textDecoder = util.TextDecoder.create("utf-8", { ignoreBOM: true })return textDecoder.decodeWithStream(input, { stream: false });}arrayBuffer2String(input: ArrayBuffer) {return this.uint8Array2String(new Uint8Array(input))}
}
export default new StringUtils()

注:发起 http 网络请求需要申请 ohos.permission.INTERNET 权限

本地测试如下:

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数据结构(邓俊辉)学习笔记】词典 02—— 散列函数
  • 用python实现求两个整数的最大公约数
  • vue 开发工具 Hbuilder 简介及应用
  • Python教程(十二):面向对象高级编程详解
  • haproxy的安装和服务信息
  • 管好“黄金数据”,浪潮海岳助力企业释放主数据潜能
  • LVS集群中的负载均衡技术
  • springboot怎么使用Redisson
  • C#表达式编程指南: 执行表达式、解释表达式、生成表达式,翻译表达式的详解与示例
  • 【5G NAS】全球唯一临时标识符GUTI介绍
  • 准确率、召回率、f1指标计算的区别
  • MySQL:约束
  • 二十九、MongoDB(1)
  • 万界星空科技QMS系统:全面升级企业质量管理的利器
  • 用C34PRO打造一套高端性能主机
  • SegmentFault for Android 3.0 发布
  • 时间复杂度分析经典问题——最大子序列和
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 345-反转字符串中的元音字母
  • Consul Config 使用Git做版本控制的实现
  • Git学习与使用心得(1)—— 初始化
  • iOS | NSProxy
  • spring学习第二天
  • 阿里云应用高可用服务公测发布
  • 给第三方使用接口的 URL 签名实现
  • 前端相关框架总和
  • 前端知识点整理(待续)
  • 使用docker-compose进行多节点部署
  • 世界上最简单的无等待算法(getAndIncrement)
  • 算法系列——算法入门之递归分而治之思想的实现
  • 微信小程序设置上一页数据
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 与 ConTeXt MkIV 官方文档的接驳
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (13)Hive调优——动态分区导致的小文件问题
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (一)Java算法:二分查找
  • (转)【Hibernate总结系列】使用举例
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .bat批处理出现中文乱码的情况
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .net专家(高海东的专栏)
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @WebService和@WebMethod注解的用法
  • [000-01-011].第2节:持久层方案的对比
  • [android] 天气app布局练习
  • [C#]C# OpenVINO部署yolov8图像分类模型
  • [emuch.net]MatrixComputations(7-12)