鸿蒙笔记--Socket

news2025/1/21 1:02:55

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

栗子:

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://www.coloradmin.cn/o/1978628.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

跟《经济学人》学英文:2024年08月03日这期 How deep is Britain’s fiscal “black hole”?

How deep is Britain’s fiscal “black hole”? Rachel Reeves sets out her first big decisions as chancellor set out: 陈述,阐明 “Set out” 的意思是陈述、阐明或展示。在这个上下文中,指的是Rachel Reeves作为财政大臣阐明了她的第一个重要决…

数据结构(8):排序

1 排序的基本概念 稳定性!!! 分类[内部、外部] 机械硬盘的读取是很慢的!!! 总结 2 内部排序 2.1 插入排序 前面时 保存好的 是排好序的哦 一个一个检查!然后放到改在的位置 只有小的时候换&am…

AI论文速读 | 2024MM【开源】时间序列预测中频率动态融合

📰题目:Pre-Training Identification of Graph Winning Tickets in Adaptive Spatial-Temporal Graph Neural Networks 🖋作者:Xingyu Zhang(张星宇), Siyu Zhao(赵思雨), Zeen Song…

200kg大载重履带遥控无人车技术详解

200kg大载重履带遥控无人车(以下简称“无人车”)是一种专为复杂地形和高负载运输设计的智能化车辆。它集成了先进的动力系统、高效的行走机构、灵活的操控系统以及强大的负载能力,能够在人难以到达或危险的环境中执行物资运输、勘探探测、应急…

【八股文】网络基础

1.简述一下TCP和UDP的区别? 特性TCP(Transmission Control Protocol)UDP(User Datagram Protocol)连接类型面向连接,需要建立三次握手连接无连接,发送数据无需建立连接数据传输提供可靠的数据传…

5款免费写作神器,高效率自动生成文章

在当今数字化的时代,写作变得越来越重要,而各种免费的写作神器也应运而生,为创作者们提供了极大的便利。以下是本文为大家详细介绍5个免费写作神器,帮助大家提高写作效率,让创作不再烦恼。 1、火呱ai写作 这是一款综合…

MySQL事务,锁,MVCC总结

mysql中最重要的就是事务,其四大特性让我们维持了数据的平衡,一致。那么事务究竟是什么,与什么相关,他的使用步骤,以及使用过程中我们会遇到什么问题呢?下面我们一起学习交流! 1.MySQL的存储引擎&#xff…

Redis学习[7] ——如何使用Redis实现分布式锁?

如何用Redis实现分布式锁? 9.5.1 为什么Redis能用来实现分布式锁? 分布式锁是用于分布式环境下并发控制的一种机制,用于控制某个资源在同一时刻只能被一个应用所使用。如下图所示: Redis可以被多个客户端共享访问,可…

jenkins自动化构建docker镜像并上传至harbor仓库

1、插件下载 首先进入jenkins之后需要现在“Maven”、“GitLab”、“Jdk”、“SSH”、“Git”的相关插件,这里不再赘述,需要什么插件直接安装即可 搜索对应插件后选择直接安装即可 2、系统全局配置 2.1 Maven配置 配置maven安装的相应的setting文件 …

How does age change how you learn?(2)年龄如何影响学习能力?(二)

Do different people experience decline differently? 不同人经历的认知衰退会有不同吗? Do all people experience cognitive decline uniformly?Or do some people’s minds slip while others stay sharp much longer? 所有人经历的认知衰退都是一样的吗?还是有些人…

计时器(Python)

代码 import time from tkinter import ttk import threading from tkinter import scrolledtext import tkinter as tkclass TimerApp:def __init__(self, root):self.root rootself.root.title("计时器")self.screen_w, self.screen_h self.root.winfo_screenwi…

Conditional Detr

encoder和detr相同,只修改了decoder部分。

(STM32笔记)九、RCC时钟树与时钟 第一部分

我用的是正点的STM32F103来进行学习,板子和教程是野火的指南者。 之后的这个系列笔记开头未标明的话,用的也是这个板子和教程。 九、RCC时钟树与时钟 九、RCC时钟树与时钟1、时钟树HSE时钟HSI时钟锁相环时钟系统时钟HCLK时钟PCLK1时钟PCLK2时钟RTC时钟独…

iPhone苹果手机Safari浏览器怎么收藏网页?

iPhone苹果手机Safari浏览器怎么收藏网页? 1、iPhone苹果手机上找到并打开Safari浏览器,并访问要收藏的网页; 2、打开网页后,点击导航上的更多功能; 3、在更多里,找到并点击添加到个人收藏,完成储存即可添…

2023华为od机试C卷【分配土地】Python实现

思路: 我们可以用哈希结构,此题适合用字典,键为出现的非零数字,值为列表,列表为【minrow,maxrow,minrol,maxrol] import sys def main():m,n map(int,input().split())rects {}for i in range(m):nums [int(i) f…

EFK之filebeat用法进阶

接上一章节:https://blog.csdn.net/weixin_46546303/article/details/140279197?spm1001.2014.3001.5501 一、filebeat module 输入流 1.filebeat module作用 Filebeat 模块的主要作用是简化日志数据的收集和处理过程。通过使用模块,你可以快速地配置…

java计算机毕设课设—网上招聘系统(附源码、文章、相关截图、部署视频)

这是什么系统? java计算机毕设课设—网上招聘系统(附源码、文章、相关截图、部署视频) 网上招聘系统的设计与实现旨在提供一个便捷、高效的在线平台,使个人求职者和公司能够有效地进行职位申请和人才招聘。该系统特别设计了两种…

Golang | Leetcode Golang题解之第318题最大单词长度乘积

题目&#xff1a; 题解&#xff1a; func maxProduct(words []string) (ans int) {masks : map[int]int{}for _, word : range words {mask : 0for _, ch : range word {mask | 1 << (ch - a)}if len(word) > masks[mask] {masks[mask] len(word)}}for x, lenX : ra…

狮子鱼 CMS ApiController.class.php SQL 注入漏洞

本章提供的所有内容仅供学习、交流和分享用途&#xff0c;只供参考。本站资源禁止并谢绝未经本站许可的使用&#xff0c;如若欲转载&#xff0c;请署名以及注明出处&#xff0c;请务必以文字链接的形式标明或保留文章原始出处和作者的信息。本站(原创)文章、资源、图片等所有内…

嵌入式全栈开发学习笔记---数据结构(顺序表)

目录 顺序结构 顺序表初始化 顺序表插入 顺序表遍历操作 顺序表前驱和后继 顺序表查找操作 顺序表删除操作 顺序表清空销毁 顺序表销毁操作 完整代码 List.c List.h Main.c 顺序表优缺点&#xff08;面试可能会考&#xff09; 上一节我们介绍了数据结构的一般概念…