コード例 #1
0
ファイル: CustomFile.cs プロジェクト: ldw880212/RsspII
        public static bool ContainsFileStartFlag(byte[] data, int dataCount)
        {
            // 20:一个估算值,用于防止传输的用户数据中包含文件起始标志。

            return(dataCount >= CustomFile.StartFlagLen &&
                   dataCount < (CustomFile.StartFlagLen + 20) &&
                   CustomFile.StartFlag == RsspEncoding.ToHostString(data, 0, CustomFile.StartFlagLen));
        }
コード例 #2
0
        /// <summary>
        /// 保存收到的用户数据
        /// </summary>
        public void SaveUserData(uint remoteID, byte[] userData)
        {
            try
            {
                var dataLength = userData.Length;

                if (CustomFile.ContainsFileStartFlag(userData, dataLength))
                {
                    // 先关闭旧的文件
                    this.RemoveFile(remoteID);

                    // 创建新的业务文件
                    var ext    = RsspEncoding.ToHostString(userData, CustomFile.StartFlagLen, dataLength - CustomFile.StartFlagLen);
                    var bdfile = new CustomFile(remoteID.ToString(), ext);

                    this.AddFile(remoteID, bdfile);
                }
                else if (CustomFile.ContainsFileEndFlag(userData, dataLength))
                {
                    // 关闭业务文件
                    this.RemoveFile(remoteID);
                }
                else
                {
                    // 保存收到的数据
                    var theFile = this.GetFile(remoteID);
                    if (theFile != null)
                    {
                        theFile.Write(userData);
                    }
                }
            }
            catch (System.Exception ex)
            {
                LogUtility.Error(ex);
            }
        }
コード例 #3
0
ファイル: CustomFile.cs プロジェクト: ldw880212/RsspII
 public static bool ContainsFileEndFlag(byte[] data, int dataCount)
 {
     return(dataCount == CustomFile.EndFlagLen &&
            CustomFile.EndFlag == RsspEncoding.ToHostString(data, 0, CustomFile.EndFlagLen));
 }