/// <summary> /// 创建基本识别头 /// </summary> /// <returns></returns> internal static _TAG_NETPACK_DISTINGUISHHEAD CreateDistinguishHead() { _TAG_NETPACK_DISTINGUISHHEAD head = new _TAG_NETPACK_DISTINGUISHHEAD(); head._flag = DecDefines.NETPACK_FLAG; head._version = DecDefines.NETPACK_DISTHEAD_VER1; head._cbsize = (byte)Marshal.SizeOf(typeof(_TAG_NETPACK_DISTINGUISHHEAD_VER1)); return(head); }
private _TAG_NETPACK_DISTINGUISHHEAD_VER1 CreateVer1Head(byte packType, ushort baseHeadType, ushort extHeadType, ushort validSize) { _TAG_NETPACK_DISTINGUISHHEAD distHead = Helpers.CreateDistinguishHead(); ushort distHeadSize = (ushort)Marshal.SizeOf(typeof(_TAG_NETPACK_DISTINGUISHHEAD)); ushort baseHeadSize = 0; switch (baseHeadType) { case DecDefines.NETPACK_BASETYPE_NOTHING: baseHeadSize = 0; break; case DecDefines.NETPACK_BASETYPE_APPLICATION_VER1: baseHeadSize = (ushort)Marshal.SizeOf(typeof(NETPACK_BASEHEAD_APPLICATION_VER1)); break; case DecDefines.NETPACK_BASETYPE_CONNECT_ERROR: baseHeadSize = (ushort)Marshal.SizeOf(typeof(_TAG_NETPACK_BASEHEAD_ERROR)); break; case DecDefines.NETPACK_BASETYPE_CONNECT_HELLO: baseHeadSize = (ushort)Marshal.SizeOf(typeof(_TAG_NETPACK_BASEHEAD_CONNECT_HELLO)); break; case DecDefines.NETPACK_BASETYPE_CONNECT_WELCOME: baseHeadSize = (ushort)Marshal.SizeOf(typeof(_TAG_NETPACK_BASEHEAD_CONNECT_WELCOME)); break; case DecDefines.NETPACK_BASETYPE_CONNECT_LOGON: baseHeadSize = (ushort)Marshal.SizeOf(typeof(_TAG_NETPACK_BASEHEAD_CONNECT_LOGON)); break; case DecDefines.NETPACK_BASETYPE_CONNECT_AUTHEN: baseHeadSize = (ushort)Marshal.SizeOf(typeof(_TAG_NETPACK_BASEHEAD_CONNECT_AUTHEN)); break; case DecDefines.NETPACK_BASETYPE_REQ_ADDSUBSCRIBE: baseHeadSize = (ushort)Marshal.SizeOf(typeof(_TAG_NETPACK_BASEHEAD_REQ_ADD_SUBSCRIBE)); break; case DecDefines.NETPACK_BASETYPE_RES_ADDSUBSCRIBE: baseHeadSize = (ushort)Marshal.SizeOf(typeof(_TAG_NETPACK_BASEHEAD_RES_ADD_SUBSCRIBE)); break; case DecDefines.NETPACK_BASETYPE_REQ_DELSUBSCRIBE: baseHeadSize = (ushort)Marshal.SizeOf(typeof(_TAG_NETPACK_BASEHEAD_REQ_DEL_SUBSCRIBE)); break; case DecDefines.NETPACK_BASETYPE_RES_DELSUBSCRIBE: baseHeadSize = (ushort)Marshal.SizeOf(typeof(_TAG_NETPACK_BASEHEAD_RES_DEL_SUBSCRIBE)); break; case DecDefines.NETPACK_BASETYPE_REQ_CLEARSUBSCRIBE: baseHeadSize = (ushort)Marshal.SizeOf(typeof(_TAG_NETPACK_BASEHEAD_REQ_CLEAR_SUBSCRIBE)); break; case DecDefines.NETPACK_BASETYPE_RES_CLEARSUBSCRIBE: baseHeadSize = (ushort)Marshal.SizeOf(typeof(_TAG_NETPACK_BASEHEAD_RES_CLEAR_SUBSCRIBE)); break; } ushort extHeadSize = 0; //扩展包头类型 switch (extHeadType) { case DecDefines.NETPACK_EXTTYPE_NOTHING: extHeadSize = 0; break; } int headSize = distHeadSize + baseHeadSize + extHeadSize; _TAG_NETPACK_ENCRYPT_CONTEXT encryptContext = new _TAG_NETPACK_ENCRYPT_CONTEXT(); encryptContext._encrypt = DecDefines.NETPACK_ENCRYPT_NOTHING; ushort dataSize = Helpers.GetEncryptStoreSize(encryptContext._encrypt, validSize); short packSize = (short)(headSize + dataSize); _TAG_NETPACK_DISTINGUISHHEAD_VER1 ver1head = new _TAG_NETPACK_DISTINGUISHHEAD_VER1(); ver1head._dist = distHead; ver1head._packtype = packType; ver1head._followsize = (ushort)(packSize - distHeadSize); ver1head._source = mEndpointID; ver1head._target = 0xffffffffffffffff; ver1head._timestamp = (ulong)DateTime.Now.Ticks; ver1head._basehead = baseHeadType; ver1head._basesize = baseHeadSize; ver1head._exthead = extHeadType; ver1head._extsize = extHeadSize; ver1head._datasize = dataSize; ver1head._state = 0; ver1head._moduleid = mModuleType; ver1head._number = mModuleNumber; ver1head._timestamp = (ulong)DateTime.Now.Ticks; return(ver1head); }