Пример #1
0
        private void Client_Connected(object sender, EventArgs e, TcpClientModel model)
        {
            var client = sender as IScsClient;

            if (client.CommunicationState == CommunicationStates.Connected)
            {
                model.IsConnected = true;
                Clients.Client(Context.ConnectionId).NoticeTcpConnect(true, model);
            }
        }
Пример #2
0
        private void OnScanDriveByWan(TcpClientModel model)
        {
            while (true)
            {
                Thread.Sleep(10000);
                string drive = string.Empty;
                if (model.TcpStream == null)
                {
                    continue;
                }

                drive = model.TcpStream.Name.Substring(0, 3);


                var findDrive = DriveInfo.GetDrives().FirstOrDefault(o => o.Name == drive);
                if (findDrive != null)
                {
                    if (findDrive.AvailableFreeSpace < 1024 * 1024 * 1024.0 * 5)
                    {
                        var           fileName = model.TcpStream.Name;
                        var           index    = fileName.LastIndexOf("\\");
                        var           dirPath  = fileName.Substring(0, index + 1);
                        DirectoryInfo dir      = new DirectoryInfo(dirPath);

                        var fileList = dir.GetFiles("*", SearchOption.TopDirectoryOnly).OrderBy(o => o.CreationTime);

                        try
                        {
                            var childFile = fileList.FirstOrDefault();
                            if (childFile == null)
                            {
                                return;
                            }
                            File.Delete(childFile.FullName);
                        }
                        catch (Exception ex)
                        {
                            LogHelper.ErrorLog(ex);
                        }
                    }
                }
            }
        }
Пример #3
0
        private void Client_MessageReceived(object sender, MessageEventArgs e, TcpClientModel model)
        {
            var dt = (DateTime.Now - model.ConnectedTime).TotalSeconds;

            if (dt > 10)
            {
                var fileName = DateTime.Now.ToString("yyyyMMddHHmmss");
                var dir      = model.FileDir + "Wan" + model.Id.ToString();
                model.TcpStream = new FileStream(dir + "\\" + fileName, FileMode.Append, FileAccess.Write);
            }
            else
            {
                if (model.TcpStream == null)
                {
                    model.TcpStream = new FileStream(model.FileDir + "\\" + DateTime.Now.ToString("yyyyMMddHHmmss"), FileMode.Append, FileAccess.Write);
                    Task.Run(() => OnScanDriveByWan(model));
                }
            }
            model.ConnectedTime = DateTime.Now;
            var message = e.Message as ScsTextMessage;

            // var byteArray = System.Text.Encoding.Default.GetBytes(message.Text);
            // var b1 = System.Text.Encoding.ASCII.GetBytes(message.Text);
            //var ss = CommonHelper.ByteToString(byteArray);
            //var bb = CommonHelper.StrToHexByte(ss);
            //var bb2 = CommonHelper.StringToByte(ss);
            if (message == null)
            {
                return;
            }
            var byteArray = Encoding.Default.GetBytes(message.Text);

            model.TcpStream.Write(byteArray, 0, byteArray.Length);
            //stream.CopyTo(model.TcpStream);
            model.TcpStream.Flush();

            model.DataSize += byteArray.Length;
        }
Пример #4
0
 private void Client_Disconnected(object sender, EventArgs e, TcpClientModel model)
 {
     model.DataSize    = 0;
     model.IsConnected = false;
     Clients.Client(Context.ConnectionId).NoticeTcpConnect(false, model);
 }