private void OnStreamRes(Datagram datagram) { StreamRes res = datagram.UnSerialData <StreamRes>(); if (FileCache.TryGetValue(res.StreamID, out StreamBase value)) { if (StreamType.Upload == value.GetStreamType()) { Upload upload = value as Upload; int block = upload.ReceiveBlock(res.Block, res.Stream); if (-1 != block) { StreamReq req = new StreamReq { StreamID = res.StreamID, Block = block }; datagram.DataType = DatagramType.Client; datagram.MessageType = CloudDatagramDefine.StreamReq; datagram.Datas = req.ToByteArray(); } else { upload.FinishUpload(); InfoReader.AddFile ( IKXTServer.DataConvert.GetString(datagram.Sender), upload.Path, upload.Name, upload.Length ); FileCache.TryRemove(res.StreamID, out _); FileUploadFinish finish = new FileUploadFinish { UploadID = res.StreamID }; datagram.DataType = DatagramType.Client; datagram.MessageType = CloudDatagramDefine.FileUploadFinish; datagram.Datas = finish.ToByteArray(); } if (!Send(datagram.ToByteArray())) { Notify(IKXTServer.LogLevel.Error, "数据发送异常"); Close(); } } } }
void IDataSender.FileStreamReq(StreamReq req) { Datagram datagram = new Datagram { DataType = DatagramType.Cloud, MessageType = CloudDatagramDefine.StreamReq, Datas = req.ToByteArray() }; if (!Send(datagram)) { RunningDatas.InfoNotify("网络连接失败 请重启软件后重试"); } }