当前位置: 首页 > 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 权限

本地测试如下:

 

相关文章:

鸿蒙笔记--Socket

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

安装python+python的基础语法

安装python python2为内置,安装python3----3.6.8 最新安装3.12使用源码安装 1.查看yum源,epel [rootpython01 ~]# yum list installed |grep epel 2.安装python3 [rootpython01 ~]# yum -y install python3 3.查看版本 [rootpython01 ~]# python…...

html+css网页制作 国家体育总局2个页面模版(无js)

htmlcss网页制作 国家体育总局2个页面模版(无js) 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&a…...

Effective Java学习笔记第27、28条原生态类型和非受检警告

目录 什么是泛型 泛型与编译器 不要轻易使用原生态类型 可以通过通配符类型来替代原生态类型 几个适合原生态类型的场景 消除非受检的警告 什么是非受检警告 如果无法消除警告 本书27-33条主要介绍泛型。首先介绍什么是泛型,它的应用场景是什么。然后重点介…...

javaEE和javaSE

引用自:https://developer.baidu.com/article/detail.html?id3312755 文章目录 前景描述javaSE简介使用场景 javaEE(J2EE)简介使用场景 结语 前景描述 javaEE和javaSE是java中比较常见的两个概念,但是又比较容易忘记,在此进行记…...

Leetcode 17.电话号码的字母组合

目录 题目 方法一 思路 代码 题目 17. 电话号码的字母组合 难度:中等 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对…...

位1的个数

编写一个函数,获取一个正整数的二进制形式并返回其二进制表达式中设置位的个数(也被称为汉明重量)。 示例 1: 输入:n 11 输出:3 解释:输入的二进制串 1011 中,共有 3 个设置位。示…...

RPA在政务服务中的挑战与解决方案

随着数字化时代的到来,数字政务的建设已成必然趋势,RPA作为数字化转型的重要工具之一,能够帮助政府单位快速实现业务流程的自动化和智能化,提高工作效率和质量,为建设数字政务提供强有力的支持,因此正被越来…...

RabbitMQ docker安装

后台配置文件 rabbitmq:image: rabbitmq:latestcontainer_name: rabbitmqports:- "5672:5672" # RabbitMQ server port- "15672:15672" # RabbitMQ management console portenvironment:RABBITMQ_DEFAULT_USER: adminRABBITMQ_DEFAULT_PASS: admin 若要打…...

关于vs调试的一些基本技巧方法,建议新手学习

文章目录 1.Debug 和 Release2.VS的调试快捷键3.对程序的监视和内存观察3.1监视3.2内存 4.编程常见错误归类4.1编译型错误4.2链接型错误4.3运行时错误 1.Debug 和 Release 在我们使用的编译器 vs 中,这个位置有两个选项,分别为Debug和Release&#xff0c…...

​MySQL——索引(二)创建索引(2)使用 CREATE INDEX 语句在已经存在的表上创建索引

若想在一个已经存在的表上创建索引,可以使用 CREATE INDEX 语句,CREATEINDEX语句创建索引的具体语法格式如下所示: CREATE [UNIQUEIFULLTEXTISPATIAL]INDEX 索引名 ON 表名(字段名[(长度)J[ASCIDESC]); 在上述语法格式中,UNIQUE、FULLTEXT 和…...

前端HTML总结

目录 前言 正文 head SEO body 网页的主要组成元素: body标签中常见的标签: 自闭合标签: 无语义标签: 特殊符号: 列表 子项: 样式修改: 定义列表: 语义化&#xff1…...

【动态规划】647. 回文子串

力扣链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 动规大法开始吟唱&#xff1a; dp[i][j]含义&#xff1a;从i到j的子串是否为回文子串 递推公式&#xff1a;当s[i] s[j]时 1. j-i<1时, dp[i][j]为true 2. 否则&#xff0c;若dp[i1][j-1]为true&#x…...

python-约瑟夫环(赛氪OJ)

[题目描述] n 个人&#xff08; 0,1,2,3,4...n−1 &#xff09;&#xff0c;围成一圈&#xff0c;从编号为 k 的人开始报数&#xff0c;报数报到 m 的人出队。 下次从出队的人之后开始重新报数&#xff0c;循环往复&#xff0c;当队伍中只剩最后一个人的时候&#xff0c;那个人…...

Less 教程:从入门到精通

Less 教程&#xff1a;从入门到精通 1. 引言 Less 是一种流行的动态样式表语言&#xff0c;它扩展了 CSS 的功能&#xff0c;使其更加强大和灵活。通过本教程&#xff0c;我们将深入探讨 Less 的基本概念、特性以及如何在项目中实际应用它。 2. Less 的基本概念 2.1 变量 …...

【VScode】如何在anaconda虚拟环境中打开vscode项目

文章目录 【必备知识】打开anaconda虚拟环境切换到项目工作目录激活anaconda虚拟路径让vscode从当前目录打开 【必备知识】 anaconda环境变量配置及配置python虚拟环境 https://blog.csdn.net/xzzteach/article/details/140621596 打开anaconda虚拟环境 切换到项目工作目录 …...

Flink任务提交流程和运行模式

任务提交流程 Flink 的提交流程随着部署模式、资源管理平台的不同&#xff0c;会有不同的变化。这里做进一步的抽象&#xff0c;形成一个大概高视角的任务执行流程图&#xff0c;如下&#xff1a; Flink按照集群和资源管理的划分运行模式有&#xff1a;Standalone、Flink On…...

【机器学习】 Sigmoid函数:机器学习中的关键激活函数

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 Sigmoid函数&#xff1a;机器学习中的关键激活函数1. 引言2. Sigmoid函数定义3.…...

Vue+Element Plus后台管理主界面搭建实现

​ 续接Django REST Framework&#xff0c;使用Vite构建Vue3的前端项目 1. 后台管理系统主界面框架搭建 后台系统主界面搭建 新建后台管理文件目录 完成后台整体布局 // 1.主界面 index.vue<script setup lang"ts"></script><template><el-…...

JAVA—异常

认识异常&#xff0c;学会从报错信息中发现问题&#xff0c;解决问题。并学会构建自定义异常&#xff0c;提醒编程时注意 目录 1.认识异常 2.自定义异常 1.自定义运行时异常 2.自定义编译时异常 3.异常的处理 1.认识异常 异常就是代表程序出现的问题&#xff0c;用来查询B…...

Epigenase m6A 甲基化酶活性/抑制比色法检测试剂盒:快速、灵敏、高通量适配

一、产品概述Epigenase m6A 甲基化酶活性/抑制比色法检测试剂盒&#xff0c;由Cytoskeleton推出&#xff0c;艾美捷代理&#xff0c;它是一套完整的优化缓冲液与试剂组合&#xff0c;专用于定量检测总 m6A 甲基化酶&#xff08;甲基转移酶&#xff09;的活性或抑制效果。该试剂…...

深入解析LM2675电源管理芯片内部架构与设计原理

1. 芯片内部电路设计概述作为一名从业十年的芯片设计工程师&#xff0c;我经常遇到同行对芯片内部结构一知半解的情况。很多人拿到新芯片后直接翻到Datasheet的应用电路部分&#xff0c;按推荐设计搭建外围电路就完事。这种做法虽然能快速实现功能&#xff0c;却错失了深入理解…...

西门子S7-200SMART PLC与组态王7.0通信在压铸机控制中的应用:附带完整程序与多媒体资料

西门子S7-200SMART PLC和组态王7.0通信 控制压铸机 附带PLC程序组态王程序组态王运行视频组态王运行图片 最近在折腾压铸机自动化改造项目&#xff0c;用西门子S7-200 SMART PLC配合组态王7.0做上位监控。这个组合在中小型设备上还挺常见&#xff0c;但实际调试时通信配置这块…...

RC4算法逆向实战:从特征识别到魔改对抗

1. RC4算法基础与逆向特征识别 RC4算法作为经典的流加密算法&#xff0c;在CTF竞赛和恶意软件分析中频繁出现。我第一次逆向分析RC4加密的样本时&#xff0c;花了整整三天才确认算法类型——因为当时的我还不熟悉它的特征指纹。现在回头看&#xff0c;识别标准RC4其实有明确的规…...

STM32智能垃圾桶开发实战:语音识别与自动分类

1. 项目概述这个智能垃圾桶项目是我去年为一个社区环保活动设计的硬件方案。当时社区正在推广垃圾分类&#xff0c;但居民反映传统分类垃圾桶使用不便&#xff0c;经常出现错投混投的情况。于是我就琢磨着用STM32做个能听懂人话、自动开盖的智能垃圾桶&#xff0c;让垃圾分类变…...

2026年企业APM应用性能观测工具选型指南:四大主流方案深度对比

2026年企业APM应用性能观测工具选型指南&#xff1a;四大主流方案深度对比 2026年&#xff0c;企业数字化转型进入云原生深水区&#xff0c;微服务、分布式架构已成为中大型企业IT系统的标配&#xff0c;同时AI Agent与大模型技术正在深度重构运维体系&#xff0c;可观测性已从…...

2025届学术党必备的十大降重复率平台推荐榜单

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 若维普系统检测出高AI生成内容&#xff0c;那么可采用如下方法来降低AI率&#xff1a;将长句…...

AI生成教材新玩法,低查重让你的教材更有竞争力!

教材的格式问题常常让编写者感到困惑。比如&#xff0c;标题应该选择多大字号&#xff1f;参考文献是依据GB/T7714还是按照某些出版机构的标准&#xff1f;习题的排版又应选择单栏还是双栏&#xff1f;各种不同的要求让人感到眼花缭乱&#xff0c;而手动调整不仅耗时费力&#…...

Tealdeer终极指南:5分钟掌握命令行工具的快速使用技巧

Tealdeer终极指南&#xff1a;5分钟掌握命令行工具的快速使用技巧 【免费下载链接】tealdeer A very fast implementation of tldr in Rust. 项目地址: https://gitcode.com/gh_mirrors/te/tealdeer Tealdeer是一个基于Rust语言开发的极速tldr客户端实现&#xff0c;为命…...

解决游戏控制器兼容性难题:ViGEmBus驱动全攻略

解决游戏控制器兼容性难题&#xff1a;ViGEmBus驱动全攻略 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 问题诊断篇&#xff1a;游戏控制器兼容性痛点分析…...