diff --git a/entry/src/main/ets/tcp2byte/index.ts b/entry/src/main/ets/tcp2byte/index.ts index dcb838f3..3fdbc7bf 100644 --- a/entry/src/main/ets/tcp2byte/index.ts +++ b/entry/src/main/ets/tcp2byte/index.ts @@ -2,19 +2,18 @@ import socket from '@ohos.net.socket' import util from '@ohos.util' import promptAction from '@ohos.promptAction' import TcpToByte from './utils/tcp2byte' -import { bytesToDecimal } from './utils/tools' - +import {bytesToDecimal} from './utils/tools' const TAG = '[TCP2BYTE]' interface RES { - code: number | string, + code: number|string, message?: string } const config = { - address: '172.37.55.191', - port: 40000 + address: '114.55.125.222', + port: 50189 } export default async function tcp2ByteRequest(data): Promise { @@ -28,11 +27,7 @@ export default async function tcp2ByteRequest(data): Promise { console.info(TAG, 'sendData=>' + JSON.stringify(sendData)) try { - await tcpClient.connect({ - address: { - address, port - } - }) + await tcpClient.connect({address: {address, port}}) //发送消息 handSendMessage(tcpClient, data.sjbs, sendData) } catch (e) { @@ -47,7 +42,7 @@ export default async function tcp2ByteRequest(data): Promise { //收到消息 tcpClient.on('message', (data) => { const res = handReceiveMessage(tcpClient, sendData, data.message) - if (res) { + if(res){ tcpClient.close() resolve(res) } @@ -73,7 +68,7 @@ export default async function tcp2ByteRequest(data): Promise { function handSendMessage(client: socket.TCPSocket, type, data) { switch (type) { - //开始考试 过程照片 考试结束需要分包 + //开始考试 过程照片 考试结束需要分包 case '02-21-000009': case '02-21-000012': case '02-21-000014': @@ -88,46 +83,46 @@ function handSendMessage(client: socket.TCPSocket, type, data) { client.send({ data: new Uint8Array(data).buffer }) break; - default: - break; + default:break; } } //处理接收的数据 -function handReceiveMessage(client: socket.TCPSocket, sendData, receiveData: ArrayBuffer): RES { +function handReceiveMessage(client: socket.TCPSocket, sendData, rData:ArrayBuffer):RES { + const receiveData = new Uint8Array(rData) //返回的消息类型 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 packages = receiveData.slice(13, 13 + messageLength * 2); + const packages = bytesToDecimal(receiveData.slice(13,13 + messageLength*2)); const forArr = new Array(packages).fill(1) - forArr.forEach((item, index) => { + forArr.forEach((item,index)=>{ const start = index * 2; const end = start + 2; - const packageIndex = bytesToDecimal([start, end]); + const packageIndex = bytesToDecimal([start,end]); 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 { - const decoder = util.TextDecoder.create('utf-8'); - const messageLength = bytesToDecimal([receiveData[9], receiveData[10]]); + }else{ + const decoder = util.TextDecoder.create('utf-8'); + const messageLength = bytesToDecimal([receiveData[9],receiveData[10]]); 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) - const tipLength = receiveData[13].buffer; + const tipLength = receiveData[13]; const messageContent = decoder.decodeWithStream(receiveData.slice(13 + markLength, 13 + markLength + tipLength)); console.info(TAG, 'messageContent=>' + messageContent) return { - code: markContent, - message: messageContent + code:markContent, + message:messageContent } } } \ No newline at end of file