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)); }
/// <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); } }
public static bool ContainsFileEndFlag(byte[] data, int dataCount) { return(dataCount == CustomFile.EndFlagLen && CustomFile.EndFlag == RsspEncoding.ToHostString(data, 0, CustomFile.EndFlagLen)); }