private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { string finalMessage = String.Empty; if (e.Error != null) { finalMessage = e.Error.GetType().ToString() + ": " + e.Error.Message; ClipboardTrasfer.ShowErrorMessage(e.Error); } else if (e.Cancelled) { finalMessage = "Timeout expired. File will be deleted"; Thread.Sleep(300); File.Delete(fileName); } else { Console.WriteLine(fileName + " download COMPLETED!!!"); } ClipboardNetworkChannel.downloadCompleted(this); if (view != null) { view.progressLabel.Content = finalMessage; Thread.Sleep(500); view.Close(); } }
public static void connectToServer() { try { socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.Connect(new IPEndPoint(MainWindow.serverIP, MainWindow.connectRemotePort)); byte[] bufferToSend = Encoding.Unicode.GetBytes(passwdDigest); Utility.SendBytes(socket, bufferToSend, bufferToSend.Length, SocketFlags.None); byte[] response = new byte[4]; if (!Utility.ReceiveBytes(socket, response, response.Length, SocketFlags.None)) { throw new Exception(); } if (Encoding.Unicode.GetString(response).Equals("OK")) { MessageBox.Show("Connected"); InputEventTransfer.Target = new IPEndPoint(MainWindow.serverIP, MainWindow.inputRemotePort); ClipboardNetworkChannel.StartService(MainWindow.clipboardLocalPort); ClipboardTrasfer.Target = new IPEndPoint(MainWindow.serverIP, MainWindow.clipboardRemotePort); OnClientConnected(); } else { MessageBox.Show("Wrong password"); ConnectWindow.worker.ReportProgress(70); Utility.ShutdownSocket(socket); } } catch (Exception e) { MessageBox.Show( e.Message); ConnectWindow.worker.ReportProgress(50); Utility.ShutdownSocket(socket); ClipboardTrasfer.StopService(); ClipboardNetworkChannel.StopService(); InputEventTransfer.StopService(); } }
public static void disconnectFromServer() { try { byte[] bufferBye = Encoding.Unicode.GetBytes("BYE"); Utility.SendBytes(socket, bufferBye, bufferBye.Length, SocketFlags.None); } catch (Exception) { Utility.ShutdownSocket(socket); } finally { MainWindow.keep.DeadClient = null; OnClientDisconnected(); InputEventTransfer.StopService(); ClipboardNetworkChannel.StopService(); ClipboardTrasfer.StopService(); Utility.ShutdownSocket(socket); MessageBox.Show("Disconnected"); } }
public static void SendClipboardNotice(IDataObject obj) { if (obj.GetDataPresent(DataFormats.Text)) { string text = (string)obj.GetData(DataFormats.Text); ClipboardTrasfer.SendText(text); } else if (obj.GetDataPresent(DataFormats.FileDrop)) { /* get the list of absolute file paths actually inside Windows Clipboard */ var dropList = (string[])obj.GetData(DataFormats.FileDrop, false); if (!ConfirmSend(dropList)) { return; } /* get parent folder, i.e. the folder in which Windows Clipboard was changed */ int lastDirSeparatorIndex = (dropList[0].LastIndexOf('\\') + 1); string parentDir = dropList[0].Remove(lastDirSeparatorIndex); string path = ""; foreach (string s in dropList) { path += s.Substring(parentDir.Length); path += "|"; } path = path.Remove(path.Length - 1); foreach (string absoluteFilePath in dropList) { /* * Check if current absolute file path inside the Clipboard represents * a Directory and (if greater than MAX_SIZE) user confirmed its transfer */ if (Directory.Exists(absoluteFilePath)) { /* First, send to client the current folder... */ ClipboardTrasfer.SendNewFolder(absoluteFilePath, ref parentDir); /* ...and all its subfolders */ string[] subDirs = Directory.GetDirectories(absoluteFilePath, "*.*", SearchOption.AllDirectories); foreach (string dir in subDirs) { ClipboardTrasfer.SendNewFolder(dir, ref parentDir); } /* finally, send to client all subfiles in order to 'fill' all previously sent folders */ string[] subFiles = Directory.GetFiles(absoluteFilePath, "*.*", System.IO.SearchOption.AllDirectories); foreach (string file in subFiles) { ClipboardTrasfer.SendFile(file, ref parentDir); } } /* * Check if current absolute file path inside the Clipboard represents * a File and (if greater than MAX_SIZE) user confirmed its transfer */ else if (File.Exists(absoluteFilePath)) { ClipboardTrasfer.SendFile(absoluteFilePath, ref parentDir); } } /* * Finally, send the path drop list, so that Clipboard could change for the counterpart */ ClipboardTrasfer.SendPathDropList(path); } else if (obj.GetDataPresent(DataFormats.Bitmap)) { BitmapSource bitmap = (BitmapSource)obj.GetData(DataFormats.Bitmap); ClipboardTrasfer.SendBitmap(bitmap); } }