public ByteArray signByteStream(ByteArray byteBuffer) { //* <p>[4字节] 长度 //* <p>[1字节] 校验码 //* <p>[1字节] 循环顺序号(从0开始,每次请求+1,不符合则断开; 0,1,2,...,127,-128,-127,...,-1,0,1,...) //* <p>[1字节] 模块号 //* <p>[1字节] 命令号 //包头长度 8 字节 //self.netSendPackVStream:writeInt8(packet.req['_MOD_']) //self.netSendPackVStream:writeInt8(packet.req['_MED_']) //self.netSendPackVStream:writeInt32(0)--预留六字节 //self.netSendPackVStream:writeInt16(0) byte[] data = byteBuffer.getBuffer(); int len = data.Length; byte module = byteBuffer.readInt8(); byte method = byteBuffer.readInt8(); short validateCode = fnvhash(m_sn, module, method, len); ByteArray buf = new ByteArray(); buf.writeInt32(Endian.SwapInt32(len)); buf.writeInt8((byte)validateCode); buf.writeInt8((byte)m_sn); buf.writeInt8(module); buf.writeInt8(method); byte[] bytes = new byte[len - 8]; Buffer.BlockCopy(data, 8, bytes, 0, len - 8); buf.writeBytes(bytes); m_sn++; return(buf); }
static int getBuffer(IntPtr L) { try { ToLua.CheckArgsCount(L, 1); NetCore.ByteArray obj = (NetCore.ByteArray)ToLua.CheckObject(L, 1, typeof(NetCore.ByteArray)); byte[] o = obj.getBuffer(); ToLua.Push(L, o); return 1; } catch(Exception e) { return LuaDLL.toluaL_exception(L, e); } }