HarmonyOS Next中有遇到Socket通信时发送Uint8Array类型数据时异常的吗?

在使用Socket进行通信时,发送的数据时字符串类型可以正常发送,如果把字符串转换成Uint8Array发送就会异常,错误信息Parameter error。问题代码在Client端内的SocketHelper

let tcpSendOptions: socket.TCPSendOptions = { 
  //字符串可以正常发送,使用Uint8Array就会异常: Parameter error 
  // data:'Hello server', 
  data: new util.TextEncoder('utf-8').encodeInto('Hello server'), 
  encoding: 'utf-8' 
} as socket.TCPSendOptions;
阅读 771
3 个回答

口味你好,具体的 socket 通信时发送 Uint8Array 类型数据时异常,查看相关文档是好像是发送的时候只能发送 string | ArrayBuffer 类型的数据,或者可以考虑把 Uint8Array 类型转化成 string 类型。

在HarmonyOS(或称为鸿蒙系统)开发中,使用Socket进行网络通信时,发送Uint8Array类型的数据通常是一个常见的需求,特别是在处理二进制数据时。

具体的socket通信时发送Uint8Array类型数据时异常,查看相关文档是好像是发送的时候只能发送string | ArrayBuffer类型的数据,或者可以考虑把Uint8Array类型转化成string类型,具体相关的代码如下:

function Uinit8ArrayToString(fileData){ 
  var dataString = ""; 
  for (var i = 0; i< fileData.length; i++) { 
    dataString += String.fromCharCode(fileData[i]); 
  } 
  return dataString 
}

字符串转Unit8Array相关代码如下:

functino stringToUnit8Array(str) { 
  var arr = []; 
  for (var i = 0; j = str.length; i < j; ++i) { 
    arr.push(str.charCodeAt(i)); 
  } 
  var tmpUint8Array = new Uint8Array(arr); 
  return tmpUint8Array 
}

相关类型为TypeScript的,使用 uint8Array.buffer 将Uint8Array转ArrayBuffer示例代码:

let arrayBuffer: ArrayBuffer = new ArrayBuffer(8); 
let uint8Array: Uint8Array = new Uint8Array(arrayBuffer); 
let buffer: ArrayBuffer = uint8Array.buffer;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题