鸿蒙笔记--Socket

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

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

栗子:

TypeScript 复制代码
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 权限

本地测试如下:

相关推荐
HwJack202 小时前
HarmonyOS APP开发玩转鸿蒙 HSP:打造高复用“乐高模块”的底层逻辑
华为·harmonyos
问心无愧05134 小时前
ctf show web入门37
笔记
羊群智妍5 小时前
2026生成式AI搜索优化:GEO监测工具全解析
笔记
koo3646 小时前
周报5.10
笔记
kdxiaojie7 小时前
U-Boot分析【学习笔记】(3)
linux·笔记·学习
智者知已应修善业8 小时前
【51单片机模拟生日蜡烛】2023-10-10
c++·经验分享·笔记·算法·51单片机
智者知已应修善业8 小时前
【51单片机如何让LED灯从一亮到八,再从八亮到一】2023-10-13
c++·经验分享·笔记·算法·51单片机
qeen878 小时前
【数据结构】二叉树相关经典函数C语言实现
c语言·数据结构·c++·笔记·学习·算法·二叉树
●VON8 小时前
28个Token重构鸿蒙App:企业级设计系统的搭建实践
华为·重构·harmonyos
Alice-YUE9 小时前
深入解析 JS 事件循环:浏览器与 Node.js 的差异全解析
前端·javascript·笔记·学习