From 87ab0bd072bd42c09a649759090942781ab53fcb Mon Sep 17 00:00:00 2001 From: lizhanwei <Dana_Lee1016@126.com> Date: 星期二, 18 二月 2020 16:08:18 +0800 Subject: [PATCH] 所有消息测试方法 --- im_lib/src/main/java/com/anyun/im_lib/util/ByteUtil.java | 8 ++ im_lib/src/main/java/com/safeluck/aykj/message/BinMessageBase.java | 6 -- im_lib/src/main/java/com/anyun/im_lib/netty/TCPReadHandler.java | 19 ++++-- app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java | 64 ++++++++++++++++++++- app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java | 31 +++++++--- lib/src/main/java/com/anyun/exam/lib/MyLog.java | 2 6 files changed, 103 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java index 092b3c4..fac1003 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java @@ -20,6 +20,9 @@ import com.google.android.material.textfield.TextInputEditText; import com.safeluck.aykj.utils.BytesUtils; +import java.io.UnsupportedEncodingException; +import java.util.Date; + import me.yokeyword.fragmentation.SupportFragment; import safeluck.drive.evaluation.DB.criterias.CriteriaForI; import safeluck.drive.evaluation.DB.criterias.viewmodel.CriteriaIViewModel; @@ -28,6 +31,10 @@ import safeluck.drive.evaluation.platformMessage.GainStuMessage; import safeluck.drive.evaluation.platformMessage.JKClientCommonMessage; import safeluck.drive.evaluation.platformMessage.JKMessage0101; +import safeluck.drive.evaluation.platformMessage.JKMessage0201; +import safeluck.drive.evaluation.platformMessage.JKMessage0202; +import safeluck.drive.evaluation.platformMessage.JKMessage0203; +import safeluck.drive.evaluation.platformMessage.JKMessage0204; import safeluck.drive.evaluation.platformMessage.JKRegisterMessage; import safeluck.drive.evaluation.platformMessage.RegisterMessage; import safeluck.drive.evaluation.im.IMSClientBootstrap; @@ -118,8 +125,8 @@ String userId = "100002"; String token = "token_" + userId; // String hosts = "[{\"host\":\"47.93.80.84\", \"port\":12125}]"; -// String hosts = "[{\"host\":\"47.93.157.103\", \"port\":2020}]"; - String hosts = "[{\"host\":\"192.168.31.77\", \"port\":12125}]"; + String hosts = "[{\"host\":\"47.93.157.103\", \"port\":2020}]"; +// String hosts = "[{\"host\":\"192.168.31.77\", \"port\":12125}]"; IMSClientBootstrap.getInstance().init(userId,token,hosts,1); break; @@ -182,6 +189,14 @@ String str1 = jkClientCommonMessage.toString(); Log.i(TAG, "onClick1: "+ str1+" ============"); + String hex = "B7 A2 B6 AF BB FA C6 F4 B6 AF BA F3 A3 AC B2 BB BC B0 CA B1 CB C9 BF AA C6 F4 B6 AF BF AA B9 D8"; + String string = null; + try { + string = new String(BytesUtils.hexStringToBytes(hex.replace(" ","")),"GBK"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + Log.i(TAG, "onClick: string="+string); break; case R.id.btn_register: @@ -203,17 +218,60 @@ break; case R.id.btn_auth: JKMessage0101 jkMessage0101 = new JKMessage0101(); -// jkMessage0101.des = + jkMessage0101.messageId = 0x0101; + jkMessage0101.phone = "0008618513021245"; + jkMessage0101.protocalVer = 235; + jkMessage0101.des ="0102030405060708"; + jkMessage0101.timestamp = (int) System.currentTimeMillis(); + byte[] jjk0101 = jkMessage0101.toBytes(); + MessageProcessor.getInstance().sendMessage(jjk0101); break; case R.id.btn_gain: + JKMessage0201 jkMessage0201 = new JKMessage0201(); + jkMessage0201.protocalVer = 235; + jkMessage0201.phone = "0008618513021245"; + jkMessage0201.messageId = 0x0201; + jkMessage0201.currentExam = 1; + jkMessage0201.id = "123456789"; + MessageProcessor.getInstance().sendMessage(jkMessage0201.toBytes()); break; case R.id.btn_start_exam: + JKMessage0202 jkMessage0202 = new JKMessage0202(); + jkMessage0202.protocalVer = 235; + jkMessage0202.phone = "0008618513021245"; + jkMessage0202.timeBCD = new Date(); + jkMessage0202.messageId = 0x0202; + jkMessage0202.curr_exam = 1; + jkMessage0202.ID = "123456789"; + jkMessage0202.exam_id = 123456; + MessageProcessor.getInstance().sendMessage(jkMessage0202.toBytes()); break; case R.id.btn_fail: + JKMessage0203 jkMessage0203 = new JKMessage0203(); + jkMessage0203.messageId = 0x0203; + jkMessage0203.phone = "0008618513021245"; + jkMessage0203.protocalVer = 235; + jkMessage0203.timeBCD = new Date(); + jkMessage0203.fail_item_id = 4; + jkMessage0203.fail_score = 10; + jkMessage0203.fail_reason = "鍙戝姩鏈哄惎鍔ㄥ悗锛屼笉鍙婃椂鏉惧紑鍚姩寮�鍏�"; + jkMessage0203.ID = "123456789"; + jkMessage0203.exam_id = 123456; + MessageProcessor.getInstance().sendMessage(jkMessage0203.toBytes()); break; case R.id.btn_gps: break; case R.id.btn_stop_exam: + JKMessage0204 jkMessage0204 = new JKMessage0204(); + jkMessage0204.messageId = 0x0204; + jkMessage0204.protocalVer = 235; + jkMessage0204.phone = "0008618513021245"; + jkMessage0204.timeBCD = new Date(); + jkMessage0204.score = 10; + jkMessage0204.stop = JKMessage0204.SUCC_STOP; + jkMessage0204.ID = "123456789"; + jkMessage0204.exam_id = 123456; + MessageProcessor.getInstance().sendMessage(jkMessage0204.toBytes()); break; } } diff --git a/app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java b/app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java index 73a3a7f..419799d 100644 --- a/app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java +++ b/app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java @@ -4,10 +4,14 @@ import com.anyun.exam.lib.MyLog; import com.anyun.im_lib.util.ByteUtil; +import com.safeluck.aykj.utils.BytesUtils; +import safeluck.drive.evaluation.platformMessage.JK2019MessageBase; import safeluck.drive.evaluation.platformMessage.PlatFormConstant; import safeluck.drive.evaluation.platformMessage.RegisterResp; import safeluck.drive.evaluation.platformMessage.ServerCommonRsp; +import safeluck.drive.evaluation.platformMessage.utils.MessageEscaper; +import safeluck.drive.evaluation.platformMessage.utils.MessageManager; import safeluck.drive.evaluation.util.CThreadPoolExecutor; import safeluck.drive.evaluation.util.Utils; @@ -22,26 +26,35 @@ private static final String TAG = MessageProcessor.class.getSimpleName(); private MessageProcessor(){ - + messageEscaper = new MessageEscaper(); + messageManager = new MessageManager(); } private static class MessageProcessorInstance{ private static final IMessageProcessor INSTANCE = new MessageProcessor(); } - + MessageEscaper messageEscaper; + MessageManager messageManager; public static IMessageProcessor getInstance(){ return MessageProcessorInstance.INSTANCE; } @Override public void receiveMsg(byte[] message) { - byte[] datas = Utils.parseMsg(message); - Log.i(TAG, "receiveMsg: "+ ByteUtil.byte2HexStr(datas)); - byte checkcolde=Utils.calCheckCode(ByteUtil.subArray(datas,0,datas.length-1)); - if (checkcolde == datas[datas.length-1]){ - Log.i(TAG, "receiveMsg: 娑堟伅姝g‘"); - parseMessage(datas); - } +// byte[] datas = Utils.parseMsg(message); +// Log.i(TAG, "receiveMsg: "+ ByteUtil.byte2HexStr(datas)); +// byte checkcolde=Utils.calCheckCode(ByteUtil.subArray(datas,0,datas.length-1)); +// if (checkcolde == datas[datas.length-1]){ +// Log.i(TAG, "receiveMsg: 娑堟伅姝g‘"); +// parseMessage(datas); +// } + + + //鍙嶈浆涔� + byte[] datas=messageEscaper.unescape(message); + MyLog.i(PlatFormConstant.TAG,"杞箟杩囧悗鐨勬湇鍔℃秷鎭細"+ BytesUtils.bytesToHexString(datas)); + JK2019MessageBase jk2019MessageBase = MessageManager.get(BytesUtils.bytesToHexString(datas)); + } private void parseMessage(byte[] datas) { diff --git a/im_lib/src/main/java/com/anyun/im_lib/netty/TCPReadHandler.java b/im_lib/src/main/java/com/anyun/im_lib/netty/TCPReadHandler.java index 97a2bbc..ff2bec0 100644 --- a/im_lib/src/main/java/com/anyun/im_lib/netty/TCPReadHandler.java +++ b/im_lib/src/main/java/com/anyun/im_lib/netty/TCPReadHandler.java @@ -59,12 +59,19 @@ // TODO: 2019/12/4 //鏈嶅姟绔繑鍥炴秷鎭悗 ByteBuf buf = (ByteBuf) msg; - byte[] req = new byte[buf.readableBytes()]; - buf.readBytes(req); - Log.i(TAG, "channelRead hex str: "+ ByteUtil.byte2HexStr(req)); - String str = new String(req, "UTF-8"); - if (req!=null && req.length>0) - imsClient.getMsgDispatcher().receivedMsg( req ); + int len = buf.readableBytes(); + if (len>0){ + byte[] req = new byte[len+2]; + buf.readBytes(req,1,len); + req[0] = 0x7E; + req[len+1] = 0x7e; + Log.i(TAG, "channelRead hex str: "+ ByteUtil.byte2HexStr(req)); +// if (req!=null && req.length>0){ +// +// imsClient.getMsgDispatcher().receivedMsg( req ); +// } + } + } @Override diff --git a/im_lib/src/main/java/com/anyun/im_lib/util/ByteUtil.java b/im_lib/src/main/java/com/anyun/im_lib/util/ByteUtil.java index 3e45dd5..be515e4 100644 --- a/im_lib/src/main/java/com/anyun/im_lib/util/ByteUtil.java +++ b/im_lib/src/main/java/com/anyun/im_lib/util/ByteUtil.java @@ -3,6 +3,8 @@ import android.text.TextUtils; import android.util.Log; +import com.safeluck.aykj.utils.BytesUtils; + import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.Charset; @@ -71,7 +73,7 @@ byte b = (byte) a; bbt[p] = b; } - Log.i(TAG, "str2Bcd: "+byte2HexStr(bbt)); +// Log.i(TAG, "str2Bcd: "+byte2HexStr(bbt)); return bbt; } @@ -244,7 +246,9 @@ String time = sdf.format(System.currentTimeMillis()); byte[] timeStampBCD = ByteUtil.str2Bcd(time); - +// String hex = "B7 A2 B6 AF BB FA C6 F4 B6 AF BA F3 A3 AC B2 BB BC B0 CA B1 CB C9 BF AA C6 F4 B6 AF BF AA B9 D8"; +// String string = new String(BytesUtils.hexStringToBytes(hex.replace(" ",""))); +// System.out.println(string); } public static byte[] subArray(byte[] srcBytes, int begin, int length) { diff --git a/im_lib/src/main/java/com/safeluck/aykj/message/BinMessageBase.java b/im_lib/src/main/java/com/safeluck/aykj/message/BinMessageBase.java index 1ac6965..5fca7e5 100644 --- a/im_lib/src/main/java/com/safeluck/aykj/message/BinMessageBase.java +++ b/im_lib/src/main/java/com/safeluck/aykj/message/BinMessageBase.java @@ -163,7 +163,6 @@ if (this.disabledFields.contains(fieldDefine.field.getName())) { continue; } - Log.i("PlatFormMessage", "1field: "+fieldDefine.field.getName()); if(fieldDefine.relativeLengthField==null) continue; try { @@ -187,17 +186,12 @@ { continue; } - Log.i("PlatFormMessage", "2field: "+fieldDefine.field.getName()); try { Object obj = fieldDefine.field.get(this); String hex = fieldDefine.coder.encode(obj); if(hex==null) { hex = ""; - } - if (fieldDefine.field.getName().equalsIgnoreCase("phone")){ - Log.i("PlatFormMessage", "phone toString: "+hex - ); } int defineLen = fieldDefine.getFieldLen(); diff --git a/lib/src/main/java/com/anyun/exam/lib/MyLog.java b/lib/src/main/java/com/anyun/exam/lib/MyLog.java index 0b24a45..6a8c124 100644 --- a/lib/src/main/java/com/anyun/exam/lib/MyLog.java +++ b/lib/src/main/java/com/anyun/exam/lib/MyLog.java @@ -1,4 +1,4 @@ -package com.anyun.exam.lib; +package com.anyun.im_lib.util; -- Gitblit v1.8.0