fix: 暂存

This commit is contained in:
wangzhongjie 2025-03-05 11:22:14 +08:00
parent 32e66a83be
commit 097711c46c

View File

@ -2,18 +2,19 @@ import socket from '@ohos.net.socket'
import util from '@ohos.util' import util from '@ohos.util'
import promptAction from '@ohos.promptAction' import promptAction from '@ohos.promptAction'
import TcpToByte from './utils/tcp2byte' import TcpToByte from './utils/tcp2byte'
import {bytesToDecimal} from './utils/tools' import { bytesToDecimal } from './utils/tools'
const TAG = '[TCP2BYTE]' const TAG = '[TCP2BYTE]'
interface RES { interface RES {
code: number|string, code: number | string,
message?: string message?: string
} }
const config = { const config = {
address: '114.55.125.222', address: '172.37.55.191',
port: 50189 port: 40000
} }
export default async function tcp2ByteRequest(data): Promise<RES> { export default async function tcp2ByteRequest(data): Promise<RES> {
@ -27,7 +28,11 @@ export default async function tcp2ByteRequest(data): Promise<RES> {
console.info(TAG, 'sendData=>' + JSON.stringify(sendData)) console.info(TAG, 'sendData=>' + JSON.stringify(sendData))
try { try {
await tcpClient.connect({address: {address, port}}) await tcpClient.connect({
address: {
address, port
}
})
//发送消息 //发送消息
handSendMessage(tcpClient, data.sjbs, sendData) handSendMessage(tcpClient, data.sjbs, sendData)
} catch (e) { } catch (e) {
@ -42,7 +47,7 @@ export default async function tcp2ByteRequest(data): Promise<RES> {
//收到消息 //收到消息
tcpClient.on('message', (data) => { tcpClient.on('message', (data) => {
const res = handReceiveMessage(tcpClient, sendData, data.message) const res = handReceiveMessage(tcpClient, sendData, data.message)
if(res){ if (res) {
tcpClient.close() tcpClient.close()
resolve(res) resolve(res)
} }
@ -83,46 +88,47 @@ function handSendMessage(client: socket.TCPSocket, type, data) {
client.send({ data: new Uint8Array(data).buffer }) client.send({ data: new Uint8Array(data).buffer })
break; break;
default:break; default:
break;
} }
} }
//处理接收的数据 //处理接收的数据
function handReceiveMessage(client: socket.TCPSocket, sendData, rData:ArrayBuffer):RES { function handReceiveMessage(client: socket.TCPSocket, sendData, rData: ArrayBuffer): RES {
const receiveData = new Uint8Array(rData) const receiveData = new Uint8Array(rData)
//返回的消息类型 //返回的消息类型
const messageType = receiveData[1]; const messageType = receiveData[1];
//流水号 //流水号
const lsh = bytesToDecimal([receiveData[2],receiveData[3]]); const lsh = bytesToDecimal([receiveData[2], receiveData[3]]);
//开始补包 //开始补包
if(messageType === 0xF0){ if (messageType === 0xF0) {
//获取消息体长度 //获取消息体长度
const messageLength = receiveData[12] const messageLength = receiveData[12]
//分包总数 //分包总数
const packages = bytesToDecimal(receiveData.slice(13,13 + messageLength*2)); const packages = bytesToDecimal(receiveData.slice(13, 13 + messageLength * 2));
const forArr = new Array(packages).fill(1) const forArr = new Array(packages).fill(1)
forArr.forEach((item,index)=>{ forArr.forEach((item, index) => {
const start = index * 2; const start = index * 2;
const end = start + 2; const end = start + 2;
const packageIndex = bytesToDecimal([start,end]); const packageIndex = bytesToDecimal([start, end]);
console.info(TAG, '补包内容' + JSON.stringify(new Uint8Array(sendData[packageIndex]))) console.info(TAG, '补包内容' + JSON.stringify(new Uint8Array(sendData[packageIndex])))
client.send({data:new Uint8Array(sendData[packageIndex]).buffer}); client.send({ data: new Uint8Array(sendData[packageIndex]).buffer });
}) })
}else{ } else {
const decoder = util.TextDecoder.create('utf-8'); const decoder = util.TextDecoder.create('utf-8');
const messageLength = bytesToDecimal([receiveData[9],receiveData[10]]); const messageLength = bytesToDecimal([receiveData[9], receiveData[10]]);
const markLength = receiveData[11]; const markLength = receiveData[11];
const markContent = decoder.decodeWithStream(receiveData.slice(12, 12 + markLength )); const markContent = decoder.decodeWithStream(receiveData.slice(12, 12 + markLength));
console.info(TAG, 'markContent=>' + markContent) console.info(TAG, 'markContent=>' + markContent)
const tipLength = receiveData[13]; const tipLength = receiveData[13];
const messageContent = decoder.decodeWithStream(receiveData.slice(13 + markLength, 13 + markLength + tipLength)); const messageContent = decoder.decodeWithStream(receiveData.slice(13 + markLength, 13 + markLength + tipLength));
console.info(TAG, 'messageContent=>' + messageContent) console.info(TAG, 'messageContent=>' + messageContent)
return { return {
code:markContent, code: markContent,
message:messageContent message: messageContent
} }
} }
} }