// 字节长度 1 4 变长 16 //传送的数据格式为 (包头(!) 数据包长度 内容 校验码 ) internal byte[] SendDataConverse(byte[] sendData) { if (sendData.Length < 4) { int k = sendData.Length; } byte[] DataToSend = sendData; int j = DataToSend.Length; byte[] sendBytes = new byte[j + 21]; //数据包长度 byte[] length = LengthByte(j); sendBytes[0] = this.Head(); Array.Copy(length, 0, sendBytes, 1, length.Length); Array.Copy(DataToSend, 0, sendBytes, 5, DataToSend.Length); //产生校验码 byte[] ckeckCode = MD5Method.MD5hash(sendBytes); int m = 0; for (int i = sendBytes.Length - 16; i < sendBytes.Length; i++) { sendBytes[i] = ckeckCode[m]; m++; } return(sendBytes); }
//返回true则表示接收数据正确 internal bool CheckReceiveData(byte[] receiveData) { bool Eql = false; byte[] checkCode = MD5Method.MD5hash(receiveData); int m = 0; for (int i = receiveData.Length - 16; i < receiveData.Length; i++) { if (checkCode[m] != receiveData[i]) { Eql = true; } m++; } if (Eql) { return(false); } else { return(true); } }