/// <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; } }
/// <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(); } } }
/// <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; } }
/// <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()); } }
/// <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); } } } }