/// <summary> /// 处理拆包 /// </summary> /// <param name="bufs"></param> /// <param name="buf"></param> private void dealChaiBao(byte[] bufs) { int length = bufs.Length; if (length < 16) { return; } long thisPackLength = bufs[0] * 0x1000000 + bufs[1] * 0x10000 + bufs[2] * 0x100 + bufs[3]; long packLength = 0; if (bufs[4] == 0xff && bufs[5] == 0xfd && bufs[6] == 0xff && bufs[9] == 0xfd && bufs[10] == 0xff && bufs[11] == 0xfd) { packLength = thisPackLength - 8; } else { return; } int packType = bufs[8]; long index = bufs.Length - 12; byte[] buf = new byte[packLength]; if (packLength > index) { Array.Copy(bufs, 12, buf, 0, index); } else { Array.Copy(bufs, 12, buf, 0, buf.Length); } while (packLength > index && !isCloseForm) { bufs = getDataBt(); if (bufs.Length + index <= packLength) { Array.Copy(bufs, 0, buf, index, bufs.Length); index += bufs.Length; } else { Array.Copy(bufs, 0, buf, index, packLength - index); index = packLength; } } if (packType > 2 && packType < 7) //3,4,5,6处理的事情 { dealTCPClien_loca(packType.ToString(), buf); return; } bool tongbuResult = isSaveDataInFile(buf, packType); //数据接收完成后,进行存储,放入到内存中 if (packType == 0x07) { //FileModel.getFlModel().getData(); //存储对象 FileModel.getFlModel().getdata(FileModel.COUNTADD); //放入到内存中 byte[] bufD = getCountBtAddHandle(getTCPServerType(0x00, 0x08)); //要接收cacheData.dat文件数据的命令 sendData(bufD, 0, bufD.Length); if (tongbuResult) { returnMessage("同步data.dat成功"); } else { returnMessage("同步data.dat失敗"); } tongbuTp = 1; } else { // FileModel.getFlModel().getCFData(); //存储对象 socketclient.Close(); //要的数据都要完了,是时候关闭了 isOpenTCPClien = false; if (tongbuResult) { returnMessage("所有文件同步完成"); } else { returnMessage("同步cacheData.dat失敗"); } tongbuTp = 2; } //reDate(buf, packType.ToString(), CommunicationMode.TCPClien_loca); }
/// <summary> /// 修改chFlBean的值 /// </summary> /// <param name="cacheFlBean"></param> public void changeCacheData(CacheFileBean cacheFlBean) { if (cacheFlBean == null) { return; } if (chFlBean == null || cacheFlBean != null) ///豁出去了,再牛B的逻辑,扛不住主机随机的修改,抗不住客户任意的蹂躏 { string locaIp = FileModel.getFlModel().ChFlBean.ServerIP_TCP; if (locaIp == null) { locaIp = XWUtils.GetAddressIP(); } int poet = FileModel.getFlModel().ChFlBean.ServerPort_TCP; poet = poet == 0 ? 51234 : poet; chFlBean = cacheFlBean; FileModel.getFlModel().ChFlBean.ServerIP_TCP = locaIp; FileModel.getFlModel().ChFlBean.ServerPort_TCP = poet; return; } chFlBean.LocaIP = chFlBean.LocaIP; if (chFlBean.LocaPort != cacheFlBean.LocaPort) { chFlBean.LocaPort = cacheFlBean.LocaPort; } if (chFlBean.LocaIP_TCP != cacheFlBean.LocaIP_TCP) { chFlBean.LocaIP_TCP = cacheFlBean.LocaIP_TCP; } if (chFlBean.LocaPort_TCP != cacheFlBean.LocaPort_TCP) { chFlBean.LocaPort_TCP = cacheFlBean.LocaPort_TCP; } if (chFlBean.ServerIP_TCP != cacheFlBean.ServerIP_TCP) { chFlBean.ServerIP_TCP = cacheFlBean.ServerIP_TCP; } if (chFlBean.ShowCanKaoDian != cacheFlBean.ShowCanKaoDian) { chFlBean.ShowCanKaoDian = cacheFlBean.ShowCanKaoDian; } if (chFlBean.ShowJingJiTag != cacheFlBean.ShowJingJiTag) { chFlBean.ShowJingJiTag = cacheFlBean.ShowJingJiTag; } if (chFlBean.ShowBlackTag != cacheFlBean.ShowBlackTag) { chFlBean.ShowBlackTag = cacheFlBean.ShowBlackTag; } if (chFlBean.BlackTime != cacheFlBean.BlackTime) { chFlBean.BlackTime = cacheFlBean.BlackTime; } if (chFlBean.NoReveTime != cacheFlBean.NoReveTime) { chFlBean.NoReveTime = cacheFlBean.NoReveTime; } if (chFlBean.BlackTimeText != cacheFlBean.BlackTimeText) { chFlBean.BlackTimeText = cacheFlBean.BlackTimeText; } if (chFlBean.CheckCText != cacheFlBean.CheckCText) { chFlBean.CheckCText = cacheFlBean.CheckCText; } List <PeopleBean> cachePeoples = cacheFlBean.Peoples; foreach (var peopleItem in cachePeoples) //List<PeopleBean>同步 { var valuePeoples = chFlBean.Peoples.Where(a => a.Id.Equals(peopleItem.Id)); if (valuePeoples.Count() == 0) { chFlBean.Peoples.Add(peopleItem); continue; } foreach (var valuePeopleItem in valuePeoples) { changePeopleBean(peopleItem, valuePeopleItem); } } List <CardBean> cards = cacheFlBean.Cards; foreach (var cardItem in cards) //List<CardBean>同步 { var valueCards = chFlBean.Cards.Where(a => a.Id.Equals(cardItem.Id)); if (valueCards.Count() == 0) { chFlBean.Cards.Add(cardItem); continue; } foreach (var valueCardItem in valueCards) { changeCard(cardItem, valueCardItem); } } List <CanKaoDianBean> canKaoDianBean = cacheFlBean.CanKaoDians; foreach (var canKaoDianBeanItem in canKaoDianBean) //List<CardBean>同步 { var valueCanKaoDianBeans = chFlBean.CanKaoDians.Where(a => a.Id.Equals(canKaoDianBeanItem.Id)); if (valueCanKaoDianBeans.Count() == 0) { chFlBean.CanKaoDians.Add(canKaoDianBeanItem); continue; } foreach (var valuecankaoItem in valueCanKaoDianBeans) { cchangeCankaodian(valuecankaoItem, canKaoDianBeanItem); } } Dictionary <string, CardBean> cardDicS = cacheFlBean.CardDic; foreach (var cardDicSItem in cardDicS) //List<CardBean>同步 { if (chFlBean.CardDic.ContainsKey(cardDicSItem.Key)) { changeCard(cardDicSItem.Value, chFlBean.CardDic[cardDicSItem.Key]); } else { chFlBean.CardDic.Add(cardDicSItem.Key, cardDicSItem.Value); } } //private List<NODEBean> nodes; //当前力丽不需要这个数据,只是干放着,没有任何数据 //private Dictionary<string, CardBean> cardDic;//Dictionary // if () }