当前位置: 首页 > 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打造一套高端性能主机
  • css属性的继承、初识值、计算值、当前值、应用值
  • docker容器内的网络抓包
  • Github访问慢解决办法
  • JAVA 学习IO流
  • Javascript弹出层-初探
  • nodejs调试方法
  • Protobuf3语言指南
  • Spring Cloud中负载均衡器概览
  • TCP拥塞控制
  • vagrant 添加本地 box 安装 laravel homestead
  • 第十八天-企业应用架构模式-基本模式
  • 简析gRPC client 连接管理
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 悄悄地说一个bug
  • 无服务器化是企业 IT 架构的未来吗?
  • 一份游戏开发学习路线
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​ubuntu下安装kvm虚拟机
  • ![CDATA[ ]] 是什么东东
  • #Ubuntu(修改root信息)
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (3)STL算法之搜索
  • (LeetCode) T14. Longest Common Prefix
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (转)http-server应用
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .NET运行机制
  • .NET中两种OCR方式对比
  • 。Net下Windows服务程序开发疑惑
  • /bin/bash^M: bad interpreter: No such file or directory
  • /boot 内存空间不够
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • [ Python ]使用Charles对Python程序发出的Get与Post请求抓包-解决Python程序报错问题
  • [23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [AHOI2009]中国象棋 DP,递推,组合数