diff --git a/entry/src/main/ets/tcp2byte/index.ts b/entry/src/main/ets/tcp2byte/index.ts index 4a280351..dcb838f3 100644 --- a/entry/src/main/ets/tcp2byte/index.ts +++ b/entry/src/main/ets/tcp2byte/index.ts @@ -2,18 +2,19 @@ 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: '114.55.125.222', - port: 50189 + address: '172.37.55.191', + port: 40000 } export default async function tcp2ByteRequest(data): Promise { @@ -27,7 +28,11 @@ 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) { @@ -42,7 +47,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) } @@ -68,7 +73,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': @@ -83,45 +88,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):RES { +function handReceiveMessage(client: socket.TCPSocket, sendData, receiveData: ArrayBuffer): RES { //返回的消息类型 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 = 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]]); - const markLength = receiveData[11].buffer; - const markContent = decoder.decodeWithStream(receiveData.slice(12, 12 + markLength )); + } 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)); console.info(TAG, 'markContent=>' + markContent) const tipLength = receiveData[13].buffer; 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