Exemplo n.º 1
0
        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);
 }
Exemplo n.º 3
0
        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);
            }
        }