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); }
public ByteArray signByteStream(byte module, byte method, byte[] data) { //* <p>[4字节] 长度 //* <p>[1字节] 校验码 //* <p>[1字节] 循环顺序号(从0开始,每次请求+1,不符合则断开; 0,1,2,...,127,-128,-127,...,-1,0,1,...) //* <p>[1字节] 模块号 //* <p>[1字节] 命令号 //包头长度 8 字节 int len = data.Length + 8; short validateCode = fnvhash(m_sn, module, method, len); ByteArray byteBuffer = new ByteArray(); byteBuffer.writeInt32(Endian.SwapInt32(len)); byteBuffer.writeInt8((byte)validateCode); byteBuffer.writeInt8((byte)m_sn); byteBuffer.writeInt8(module); byteBuffer.writeInt8(method); byteBuffer.writeBytes(data); m_sn++; return(byteBuffer); }
static int writeInt8(IntPtr L) { try { ToLua.CheckArgsCount(L, 2); NetCore.ByteArray obj = (NetCore.ByteArray)ToLua.CheckObject(L, 1, typeof(NetCore.ByteArray)); byte arg0 = (byte)LuaDLL.luaL_checknumber(L, 2); obj.writeInt8(arg0); return 0; } catch(Exception e) { return LuaDLL.toluaL_exception(L, e); } }
public void writeInt8(byte value) { m_pBuffer.writeInt8(value); }