private void lstDetails_MouseDoubleClick(object sender, MouseButtonEventArgs e) { ConnectToPeer PeerWindow = new ConnectToPeer((Host)lstAvailableHosts.SelectedItem, (IPEndPointEx)lstDetails.SelectedItem, ConnectionPort); PeerWindow.Show(); }
public void Get_Click(object sender, RoutedEventArgs e) { ConnectToPeer Peer = new ConnectToPeer(); Peer.TCPConnect(((dynamic)lstResults.SelectedItem).IPAddr); Peer.SendMsg("sendme:" + ((dynamic)lstResults.SelectedItem).FileName + ":" + ((dynamic)lstResults.SelectedItem).FileSize + ":" + txtParts.Text); }
public void Receive() { try { byte[] msg = new byte[100]; _Socket.Receive(msg); string[] Message = Encoding.ASCII.GetString(msg).Split(':'); switch (Message[0]) { case "sendme": string FileName = Message[1]; long FileSize = long.Parse(Message[2]); int NoParts = int.Parse(Message[3]); App.Current.Dispatcher.Invoke((Action) delegate { ConnectToPeer Peer = new ConnectToPeer(); Peer.TCPConnect(_Socket.RemoteEndPoint.ToString().Split(':')[0]); Thread PeerThread = new Thread(new ParameterizedThreadStart(Peer.SendSharedFile)); PeerThread.Start(new object[] { FileName, FileSize, NoParts }); }); _Socket.Close(); App.Current.Dispatcher.Invoke((Action) delegate { this.Close(); }); break; case "take": { int no_parts = int.Parse(Message[1]); string SaveFolder = null; System.Windows.Forms.FolderBrowserDialog FolderBrowser = new System.Windows.Forms.FolderBrowserDialog(); App.Current.Dispatcher.Invoke((Action) delegate { System.Windows.Forms.DialogResult result = FolderBrowser.ShowDialog(); if (result == System.Windows.Forms.DialogResult.OK) { SaveFolder = FolderBrowser.SelectedPath; } else { MessageBox.Show("File Transfer failed."); Receive(); return; } }); //////////Send Files///////// { string ack = "ok"; byte[] data = new byte[ack.Length + 2]; data = Encoding.ASCII.GetBytes(ack.ToCharArray()); _Socket.Send(data); } /////////////////// for (int i = 0; i < no_parts; i++) { _Socket.Receive(msg); Message = Encoding.ASCII.GetString(msg).Split('~'); switch (Message[0]) { case "file": byte[] data = new byte[int.Parse(Message[1])]; //////////Send Files///////// { string ack = "ok"; byte[] d = new byte[ack.Length + 2]; d = Encoding.ASCII.GetBytes(ack.ToCharArray()); _Socket.Send(d); } _Socket.ReceiveBufferSize = data.Length; /////////////////// _Socket.Receive(data); string ReceivedFilePath = SaveFolder + "\\" + Message[2].Substring(0, Message[2].IndexOf("\0")); FileStream _File = new FileStream(ReceivedFilePath, FileMode.Create, FileAccess.Write); _File.Write(data, 0, data.Length); _File.Flush(); App.Current.Dispatcher.Invoke((Action) delegate { this.progressBar.Value = (((double)i + 1) / no_parts) * 100; lstReceived.Items.Add(new BellaFile() { Name = System.IO.Path.GetFullPath(_File.Name) }); }, System.Windows.Threading.DispatcherPriority.Send); _File.Close(); break; } } } MessageBox.Show("You received something!"); break; } } catch (ThreadAbortException ex) { // Delaberately Left Empty.; } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public void Receive() { try { byte[] msg = new byte[100]; _Socket.Receive(msg); string[] Message = Encoding.ASCII.GetString(msg).Split(':'); switch (Message[0]) { case "sendme": string FileName = Message[1]; long FileSize = long.Parse(Message[2]); int NoParts = int.Parse(Message[3]); App.Current.Dispatcher.Invoke((Action)delegate { ConnectToPeer Peer = new ConnectToPeer(); Peer.TCPConnect(_Socket.RemoteEndPoint.ToString().Split(':')[0]); Thread PeerThread = new Thread(new ParameterizedThreadStart(Peer.SendSharedFile)); PeerThread.Start(new object[] { FileName, FileSize, NoParts }); }); _Socket.Close(); App.Current.Dispatcher.Invoke((Action)delegate { this.Close(); }); break; case "take": { int no_parts = int.Parse(Message[1]); string SaveFolder = null; System.Windows.Forms.FolderBrowserDialog FolderBrowser = new System.Windows.Forms.FolderBrowserDialog(); App.Current.Dispatcher.Invoke((Action)delegate { System.Windows.Forms.DialogResult result = FolderBrowser.ShowDialog(); if (result == System.Windows.Forms.DialogResult.OK) { SaveFolder = FolderBrowser.SelectedPath; } else { MessageBox.Show("File Transfer failed."); Receive(); return; } }); //////////Send Files///////// { string ack = "ok"; byte[] data = new byte[ack.Length + 2]; data = Encoding.ASCII.GetBytes(ack.ToCharArray()); _Socket.Send(data); } /////////////////// for (int i = 0; i < no_parts; i++) { _Socket.Receive(msg); Message = Encoding.ASCII.GetString(msg).Split('~'); switch (Message[0]) { case "file": byte[] data = new byte[int.Parse(Message[1])]; //////////Send Files///////// { string ack = "ok"; byte[] d = new byte[ack.Length + 2]; d = Encoding.ASCII.GetBytes(ack.ToCharArray()); _Socket.Send(d); } _Socket.ReceiveBufferSize = data.Length; /////////////////// _Socket.Receive(data); string ReceivedFilePath = SaveFolder + "\\" + Message[2].Substring(0, Message[2].IndexOf("\0")); FileStream _File = new FileStream(ReceivedFilePath, FileMode.Create, FileAccess.Write); _File.Write(data, 0, data.Length); _File.Flush(); App.Current.Dispatcher.Invoke((Action)delegate { this.progressBar.Value = (((double)i + 1) / no_parts) * 100; lstReceived.Items.Add(new BellaFile() { Name = System.IO.Path.GetFullPath(_File.Name) }); }, System.Windows.Threading.DispatcherPriority.Send); _File.Close(); break; } } } MessageBox.Show("You received something!"); break; } } catch (ThreadAbortException ex) { // Delaberately Left Empty.; } catch (Exception ex) { MessageBox.Show(ex.Message); } }