예제 #1
0
        public static ClientData GetClientData(byte[] data)
        {
            ClientData temp;

            try
            {
                temp = JsonConvert.DeserializeObject <ClassStatic.ClientData>(ClassStatic.GetString(data));
            }
            catch
            {
                temp = null;
            }
            return(temp);
        }
예제 #2
0
        public static UserLoginSuccess GetLoginSuccessData(byte[] data)
        {
            UserLoginSuccess temp;

            try
            {
                temp = JsonConvert.DeserializeObject <ClassStatic.UserLoginSuccess>(ClassStatic.GetString(data));
            }
            catch
            {
                temp = null;
            }
            return(temp);
        }
예제 #3
0
        public static ListDrive GetListDrive(byte[] data)
        {
            ListDrive temp;

            try
            {
                temp = JsonConvert.DeserializeObject <ClassStatic.ListDrive>(ClassStatic.GetString(data));
            }
            catch
            {
                temp = null;
            }
            return(temp);
        }
예제 #4
0
        public static ListDriveData GetListDriveData(byte[] data)
        {
            ListDriveData temp;

            try
            {
                temp = JsonConvert.DeserializeObject <ClassStatic.ListDriveData>(ClassStatic.GetString(data));
            }
            catch
            {
                temp = new ListDriveData("false", new List <ListDrive>());
            }
            return(temp);
        }
예제 #5
0
 /// <summary>
 /// 有设备改变运行状态
 /// </summary>
 /// <param name="state"></param>
 /// <param name="data"></param>
 public void OnDeviceChangeStateHandler(int state, byte[] data)
 {
     if (state == 203)
     {
         string token      = ClassStatic.GetString(data);
         string stateDrive = token.Substring(token.Length - 2, 2);
         token = token.Substring(0, token.Length - 2);
         this.Invoke(new Action(() => {
             if (controlDeviceOnline.ContainsKey(token))
             {
                 ControlDevice temp = controlDeviceOnline[token];
                 temp.Status        = (stateDrive == "在线" ? 0 : 1);
             }
         }));
     }
 }
예제 #6
0
        /// <summary>
        /// 将byte[]转为Result
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public static Result GetResult(byte[] data)
        {
            Result temp;

            try
            {
                temp = JsonConvert.DeserializeObject <ClassStatic.Result>(ClassStatic.GetString(data));
            }
            catch
            {
                temp     = new Result();
                temp.ret = "false";
                temp.msg = "与服务器链接失败";
            }
            return(temp);
        }
예제 #7
0
 private void SettingChange_Callback(bool state, byte[] data)
 {
     System.Diagnostics.Debug.WriteLine(ClassStatic.GetString(data));
 }
        /// <summary>
        /// 接收服务端信息
        /// </summary>
        private void SocketReceive()
        {
            while (socketConnect && socketClient != null && socketClient.Connected)
            {
                try
                {
                    byte[]      temp       = new byte[1024];
                    byte[]      data       = new byte[1024];
                    List <byte> byteSource = new List <byte>();
                    int         length     = socketClient.Receive(data, data.Length, 0);

                    byteSource.AddRange(data.Take(length));
                    while (socketClient.Available > 0)
                    {
                        Thread.Sleep(100);
                        int len = socketClient.Receive(temp, temp.Length, 0);
                        if (len > 0)
                        {
                            byteSource.AddRange(temp.Take(len));
                        }
                    }
                    data   = byteSource.ToArray();
                    length = data.Length;

                    if (length > 3)
                    {
                        // 获取标识码
                        int state;
                        if (Int32.TryParse(Encoding.UTF8.GetString(data.Take(3).ToArray()), out state))
                        {
                            // 是否使用回调函数
                            uint isCallback = data[3];
                            // 截取数据
                            data = data.Skip(4).ToArray();
                            if (isCallback == 1)
                            {
                                string token = ClassStatic.GetString(data.Take(32).ToArray());
                                if (sendCallbackList.ContainsKey(token))
                                {
                                    data = data.Skip(32).ToArray();
                                    sendCallbackList[token].action(true, data);
                                    sendCallbackList.Remove(token);
                                }
                                // 丢弃错误回调ID的数据包
                            }
                            else
                            {
                                // 执行客户端信息响应事件
                                OnServerReceiveHandler?.Invoke(state, data);
                            }
                        }
                        // 丢弃协议不合法的数据包
                    }
                    // 丢弃长度不合法的数据包
                }
                catch (SocketException ex)
                {
                    // 断开连接
                    socketConnect = false;
                    // 断开与服务器的连接
                    OnServerCloseHandler?.Invoke();
                    return;
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex.ToString());
                    // 其他错误
                }
            }
        }
예제 #9
0
        /// <summary>
        /// 远程发送剪贴板中含有文字
        /// </summary>
        /// <param name="state"></param>
        /// <param name="data"></param>
        public void OnOtherDriveClipboardDataTextHandler(int state, byte[] data)
        {
            if (state == 221)
            {
                this.Invoke(new Action(() => {
                    ClassStatic.isRemoteClipboardData = 2;
                    Clipboard.SetText(ClassStatic.GetString(data));
                }));
            }
            if (state == 222)
            {
                this.Invoke(new Action(() => {
                    Bitmap bmp  = new Bitmap(Clipboard.GetImage());
                    string path = ClassStatic.GetConfigSoftware("cachePath");
                    if (Directory.Exists(path) == false)
                    {
                        path = System.Environment.CurrentDirectory + "\\cache";
                        Directory.CreateDirectory(path);
                        ClassStatic.SetConfigSoftware("cachePath", path);
                    }
                    path += "\\img";
                    if (Directory.Exists(path) == false)
                    {
                        Directory.CreateDirectory(path);
                    }

                    path += "\\" + DateTime.Now.ToString("yyyy-MM-dd.HHmmss") + ".png";
                    bmp.Save(path, Clipboard.GetImage().RawFormat);
                    StringCollection file = new StringCollection();
                    file.Add(path);
                    ClassStatic.isRemoteClipboardData = 2;
                    Clipboard.SetFileDropList(file);
                    bmp.Dispose();
                }));
            }
            if (state == 223)
            {
                string fileName = "";

                try
                {
                    int lenth = Convert.ToInt32(ClassStatic.GetString(data.Skip(1).Take(data[0]).ToArray()));
                    data     = data.Skip(data[0] + 1).ToArray();
                    fileName = ClassStatic.GetString(data.Take(lenth).ToArray());
                    data     = data.Skip(lenth).ToArray();
                }
                catch
                {
                }

                if (fileName != "")
                {
                    this.Invoke(new Action(() => {
                        string path = ClassStatic.GetConfigSoftware("cachePath");
                        if (Directory.Exists(path) == false)
                        {
                            path = System.Environment.CurrentDirectory + "\\cache";
                            Directory.CreateDirectory(path);
                            ClassStatic.SetConfigSoftware("cachePath", path);
                        }
                        path += "\\" + fileName;

                        System.Diagnostics.Debug.WriteLine(path);
                        FileStream fs = new FileStream(path, FileMode.Create);

                        System.Diagnostics.Debug.WriteLine(data.Length);
                        fs.Write(data, 0, data.Length);
                        fs.Close();

                        StringCollection file = new StringCollection();
                        file.Add(path);
                        ClassStatic.isRemoteClipboardData = 2;
                        Clipboard.SetFileDropList(file);
                        System.Diagnostics.Debug.WriteLine(Clipboard.GetFileDropList().Count);
                    }));
                }
            }
            if (state == 238)
            {
                this.Invoke(new Action(() =>
                {
                    FormMain.formMain.deviceList.InitializeDeviceList();
                }));
            }
        }