Пример #1
0
        /// <summary>
        /// 连接线程
        /// </summary>
        void thread_connect()
        {
            try
            {
                //lock (SocketClient)

                SocketClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse(ServerIP), ServerPort);
                SocketClient.Connect(serverEndPoint);
                Reporter.writeLog(MyConfig.PATH_NET_LOG, "connect to " + ServerIP + ":" + ServerPort.ToString());
                if (SocketClient.Connected)
                {
                    SocketClient.BeginReceive(msgByte, 0, msgByte.Length, 0, asycnCallBack, null);
                }
            }
            catch (Exception e)
            {
                Reporter.reportBug(e.ToString());
                //throw e;
            }
        }
Пример #2
0
        /// <summary>
        /// 设置文件同步状态
        /// </summary>
        /// <param name="queue"></param>
        public void setFileStatus(Queue <string> queue, SyncResult.FileSyncStatus status)
        {
            Reporter.writeLog("./log/file_synced.log", "synced");
            string fileName;

            if (status == SyncResult.FileSyncStatus.Success)
            {
                while (queue.Count > 0)
                {
                    fileName = queue.Dequeue();
                    if (listView_syncStatus.Items.ContainsKey(fileName))
                    {
                        if (listView_syncStatus.Items[fileName].SubItems[1].Text.Equals(NO_EVENT))
                        {
                            continue;
                        }
                        listView_syncStatus.Items[fileName].SubItems[1].Text      = NO_EVENT;
                        listView_syncStatus.Items[fileName].SubItems[2].Text      = "同步完成";
                        listView_syncStatus.Items[fileName].SubItems[2].ForeColor = Color.Green;
                        listView_syncStatus.Items[fileName].SubItems[3].Text      = DateTime.Now.ToString();
                    }
                }
            }
            else
            {
                foreach (ListViewItem lvi in listView_syncStatus.Items)
                {
                    if (lvi.SubItems[1].Text.Equals(NO_EVENT))
                    {
                        continue;
                    }
                    lvi.SubItems[1].Text      = UNSYNCED;
                    lvi.SubItems[2].Text      = "同步失败";
                    lvi.SubItems[2].ForeColor = Color.Red;
                    lvi.SubItems[3].Text      = DateTime.Now.ToString();
                }
            }
        }
Пример #3
0
 /// <summary>
 /// 消息处理
 /// </summary>
 /// <param name="iar"></param>
 void receiveCallBack(IAsyncResult iar)
 {
     try
     {
         int    REnd            = SocketClient.EndReceive(iar);
         string receive_content = Encoding.UTF8.GetString(msgByte, 0, REnd);
         string full_content    = "";
         if (!string.IsNullOrEmpty(receive_content) && receive_content != "")
         {
             //Thread.Sleep(2);
             if (receive_content.Contains(Order.FLAG_START))
             {
                 flag_fullReceive = false;
                 receiveBuffer    = new Queue <string>();
             }
             if (!receive_content.Contains(Order.FLAG_START) && !receive_content.Contains(Order.FLAG_STOP))
             {
                 receiveBuffer.Enqueue(receive_content);
             }
             if (receive_content.Contains(Order.FLAG_STOP))
             {
                 while (receiveBuffer.Count > 0)
                 {
                     full_content += receiveBuffer.Dequeue();
                 }
                 Reporter.writeLog(MyConfig.PATH_NET_LOG, "net helper : " + full_content);
                 //receiveInfo = full_content;
                 //flag_fullReceive = true;
             }
         }
         SocketClient.BeginReceive(msgByte, 0, msgByte.Length, 0, asycnCallBack, null);
     }
     catch (Exception e)
     {
         throw e;
     }
 }
Пример #4
0
        /// <summary>
        /// 收到消息后的处理
        /// </summary>
        /// <param name="iar"></param>
        void receiveCallBack(IAsyncResult iar)
        {
            try
            {
                int    REnd            = netHelper.SocketClient.EndReceive(iar);
                string receive_content = Encoding.UTF8.GetString(netHelper.msgByte, 0, REnd);
                string full_content    = "";
                if (!string.IsNullOrEmpty(receive_content) && receive_content != "")
                {
                    Reporter.writeLog(MyConfig.PATH_NET_LOG, "login : "******"李坑";
                        //userInfo.login_result = true;

                        Hashtable ht = JsonHelper.getDeserializeObject <Hashtable>(full_content);
                        if (ht.ContainsKey(UserInfo.NAME_USER_NAME))
                        {
                            userInfo.UserName = ht[UserInfo.NAME_USER_NAME].ToString();
                        }
                        if (ht.ContainsKey(UserInfo.NAME_ICON))
                        {
                            userInfo.Icon = ht[UserInfo.NAME_ICON].ToString();
                        }
                        if (ht.ContainsKey(UserInfo.NAME_LOGIN_RESULT))
                        {
                            userInfo.login_result = (bool)ht[UserInfo.NAME_LOGIN_RESULT];
                        }
                        if (ht.ContainsKey(UserInfo.NAME_ERRO_CODE))
                        {
                            userInfo.error_code = int.Parse(ht[UserInfo.NAME_ERRO_CODE].ToString());
                        }


                        User_Info = userInfo;
                        MethodInvoker methodInvokeNavigation = new MethodInvoker(navigateToLoginWindow);
                        BeginInvoke(methodInvokeNavigation);
                    }
                    netHelper.beginReceiveCallBack();
                }
            }
            catch (Exception e)
            {
                Reporter.reportBug(e.ToString());
            }
        }
Пример #5
0
        /// <summary>
        /// 不解密导出项目
        /// </summary>
        /// <param name="itemNames"></param>
        /// <param name="keyNames"></param>
        /// <param name="destination"></param>
        public static void exportItemsWithoutDiscryption(Queue <string> itemNames, Queue <string> keyNames, string destination, Label labelFileStatus)
        {
            if (itemNames.Count != keyNames.Count)
            {
                return;
            }
            string itemName;
            string keyName;
            string fileName;

            while (itemNames.Count > 0)
            {
                itemName = itemNames.Dequeue();
                keyName  = keyNames.Dequeue();
                //调试用
                Reporter.writeLog("./log/export.log", "exportWithoutDiscryption " + itemName);
                if (keyName.Contains(FileTree.FILE_IDENTIFY_NAME))
                {
                    fileName = itemName + MyConfig.EXTEND_NAME_ENCRYP_FILE;
                    labelFileStatus.Invoke(new MethodInvoker(delegate
                    {
                        labelFileStatus.Text = "正在处理: " + Path.GetFileName(fileName);
                        labelFileStatus.SetBounds(142 - (labelFileStatus.Width / 2), labelFileStatus.Location.Y, labelFileStatus.Width, labelFileStatus.Height);
                    }
                                                             ));
                    /* 直接复制 */
                    if (File.Exists(fileName))
                    {
                        //CMDComand.discryptFile(fileName, destination + "/" + Path.GetFileNameWithoutExtension(fileName));
                        copyFile(fileName, destination + "/" + Path.GetFileName(fileName));
                    }
                    //CMDComand.discryptFile(fileName, destination + "/" + Path.GetFileName(fileName));
                }
                else if (keyName.Contains(FileTree.FOLDER_IDENTIFY_NAME))
                {
                    if (Directory.Exists(itemName))
                    {
                        /* 防止重名 */
                        string destName = destination + "/" + Path.GetFileName(itemName);
                        if (!Directory.Exists(destName))
                        {
                            Directory.CreateDirectory(destName);
                        }
                        DirectoryInfo   directoryInfo  = new DirectoryInfo(itemName);
                        DirectoryInfo[] directory_info = directoryInfo.GetDirectories();
                        FileInfo[]      fileInfo       = directoryInfo.GetFiles();
                        Queue <string>  names          = new Queue <string>();
                        Queue <string>  keys           = new Queue <string>();
                        for (int i = 0; i < fileInfo.Length; i++)
                        {
                            names.Enqueue(fileInfo[i].DirectoryName + "/" + Path.GetFileNameWithoutExtension(fileInfo[i].FullName));
                            keys.Enqueue(FileTree.FILE_IDENTIFY_NAME);
                        }
                        for (int i = 0; i < directory_info.Length; i++)
                        {
                            names.Enqueue(directory_info[i].FullName);
                            keys.Enqueue(FileTree.FOLDER_IDENTIFY_NAME);
                        }
                        /* 递归 */
                        exportItemsWithoutDiscryption(names, keys, destination + "/" + Path.GetFileName(itemName), labelFileStatus);
                    }
                }
            }
        }