Exemplo n.º 1
0
        private void TCPClients_OnReceive(byte[] data, int offset, int length)
        {
            byte[] r = new byte[length];
            Buffer.BlockCopy(data, offset, r, 0, length);
            _queue.Data.AddRange(r);

            bool isContinueGetData = false;

            while (_queue.Data.Count > 12 && !isContinueGetData)
            {
                byte[] datas = Read(out isContinueGetData);
                if (datas != null && datas.Length > 0)
                {
                    if (!File.Exists(_queue.FilePath) || _override)
                    {
                        OnReceiveFile?.Invoke(_queue.FilePath); // invoke the message first. then write file
                        _receivedQueue.Enqueue(new ReceviedFile {
                            Data = datas, FilePath = _queue.FilePath
                        });
                    }
                    else
                    {
                        OnError?.Invoke($"Received file success, but file exist:{_queue.FilePath}");
                    }

                    _queue.InitData();
                }
            }
        }
Exemplo n.º 2
0
        private void TcpServer_eventactionReceive(int connectId, byte[] data, int offset, int length)
        {
            if (!_queue.ContainsKey(connectId))
            {
                FileDataContainer container = new FileDataContainer {
                    Length = 0, Data = new List <byte>(), FilePathLenght = 0, FilePath = string.Empty
                };
                _queue.Add(connectId, container);
            }

            byte[] r = new byte[length];
            Buffer.BlockCopy(data, offset, r, 0, length);
            _queue[connectId].Data.AddRange(r);

            bool isContinueGetData = false;

            while (_queue[connectId].Data.Count > 12 && !isContinueGetData)
            {
                byte[] datas = Read(connectId, out isContinueGetData);
                if (datas != null && datas.Length > 0)
                {
                    if (!File.Exists(_queue[connectId].FilePath) || _override)
                    {
                        OnReceiveFile?.Invoke(connectId, _queue[connectId].FilePath);
                        _receivedQueue.Enqueue(new ReceviedFile {
                            Data = datas, FilePath = _queue[connectId].FilePath
                        });

                        //if (FileHelper.WriteFile(datas, queue[connectId].FilePath))
                        //{
                        //    OnReceiveFile?.Invoke(connectId, queue[connectId].FilePath);
                        //}
                        //else
                        //    OnError?.Invoke($"Received file success, but write file failed:{queue[connectId].FilePath}");
                    }
                    else
                    {
                        OnError?.Invoke($"Received file success, but file exist:{_queue[connectId].FilePath}");
                    }
                    _queue[connectId].InitData();
                }
            }
        }