コード例 #1
0
        private void добавитьФайлToolStripMenuItem_Click(object sender, EventArgs e)
        {
            AddFileDialog.ShowDialog();
            if (AddFileDialog.FileNames.Length == 0)
            {
                return;
            }

            int index = pathFiles.Length;

            Array.Resize(ref pathFiles, pathFiles.Length + AddFileDialog.FileNames.Length);

            foreach (string a in AddFileDialog.FileNames)
            {
                ListViewItem item = this.FilesList.Items.Add((this.FilesList.Items.Count + 1).ToString());
                item.SubItems.Add(a.Substring(a.LastIndexOf('\\') + 1));
                FileInfo fileInfo = new FileInfo(a);
                item.SubItems.Add((fileInfo.Length / 1000000.0).ToString() + " МБ");
                item.SubItems.Add("Готов к отправке");

                pathFiles[index++] = a;

                LogApplication.WriteLog("[SendFileForm] В список к отправке добавлен файл " + a);
            }
        }
コード例 #2
0
 /// <summary>
 /// 文件拖入且松开
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void File_Drop(object sender, System.Windows.DragEventArgs e)
 {
     if (e.Data.GetDataPresent(System.Windows.DataFormats.FileDrop))
     {
         string[] files = (string[])e.Data.GetData(System.Windows.DataFormats.FileDrop);
         if (files.Length < 1)
         {
             return;
         }
         AddFileDialog addFileDialog = new AddFileDialog(files[0]);
         addFileDialog.ShowDialog();
     }
 }
コード例 #3
0
        private void передатьФайлToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LogApplication.WriteLog("\n\n[Передача файла EVENT] Открытие диалога выбора файла");
            this.TransferFile_Progress.Value = 0;
            Label_State.Text = "Выбор файла";

            GlavnForm.Invoke((MethodInvoker) delegate
            {
                AddFileDialog.ShowDialog();
            });

            LogApplication.WriteLog("[Передача файла EVENT] Проверка количества выбранных файлов");

            if (AddFileDialog.FileNames.Length == 0)
            {
                LogApplication.WriteLog("[Передача файла EVENT] Файлы не были выбранны");
                return;
            }

            LogApplication.WriteLog("[Передача файла EVENT] Создание item'a в таблице");

            ListViewItem item = this.FilesList.Items.Add((this.FilesList.Items.Count + 1).ToString());

            item.SubItems.Add(AddFileDialog.FileNames[0].Substring(AddFileDialog.FileNames[0].LastIndexOf('\\') + 1));
            FileInfo fileInfo = new FileInfo(AddFileDialog.FileNames[0]);

            item.SubItems.Add((fileInfo.Length / 1000000f).ToString() + " МБ");
            item.SubItems.Add("Отправляется");


            LogApplication.WriteLog("[Передача файла EVENT] ApplicationDoEvents");
            Application.DoEvents();

            client = new UdpClient();
            string buffer = "1" + AddFileDialog.FileNames[0].Substring(AddFileDialog.FileNames[0].LastIndexOf('\\') + 1, AddFileDialog.FileNames[0].Length - AddFileDialog.FileNames[0].LastIndexOf('\\') - 1);

            LogApplication.WriteLog($"[Передача файла EVENT] Передача клиенту названия файла {buffer}");
            {
                Label_State.Text = "Передача названия файла";
                client.Send(Config.Encoder.GetBytes(buffer), Config.Encoder.GetBytes(buffer).Length, RemoteIp.ToString(), Config.UDP_FILE_NAME_RECEIVE);
            }

            LogApplication.WriteLog($"[Передача файла EVENT] Передача клиенту размера файла");
            {
                buffer = $"4{fileInfo.Length / 1000000f}";
                client.Send(Config.Encoder.GetBytes(buffer), Config.Encoder.GetBytes(buffer).Length, RemoteIp.ToString(), Config.UDP_FILE_NAME_RECEIVE);
            }

            new Task(() =>
            {
                LogApplication.WriteLog("[Передача файла EVENT] Передано, начинаю передачу по TCP -> " + AddFileDialog.FileNames[0] + "\n\n\n");
                BinaryReader reader = new BinaryReader(new FileStream(AddFileDialog.FileNames[0], FileMode.Open));

                this.TransferFile_Progress.Maximum = (int)reader.BaseStream.Length;

                long sendedBytes = 0;

                Label_State.Text = "Передача файла";

                while (reader.BaseStream.Position < reader.BaseStream.Length)
                {
                    try
                    {
                        byte[] ReadBytes = reader.ReadBytes(1024);
                        tcpClient.GetStream().Write(ReadBytes, 0, ReadBytes.Length);

                        sendedBytes += ReadBytes.Length;
                        this.TransferFile_Progress.Value += ReadBytes.Length;
                        LogApplication.WriteLog($"SEND bytes {ReadBytes.Length.ToString()}/{sendedBytes}");
                        LogApplication.WriteLog($"Stream position {reader.BaseStream.Position}/{reader.BaseStream.Length}\n");
                    }
                    catch (Exception Ex)
                    {
                        LogApplication.WriteLog("[SendBytes] exception \n" + Ex.Message);
                    }


                    GlavnForm.Invoke((MethodInvoker) delegate
                    {
                        Label_State.Text = $"Идёт передача {reader.BaseStream.Position / (float)reader.BaseStream.Length * 100} из 100%";
                    });
                }


                Thread.Sleep(300);
                LogApplication.WriteLog("[Передача файла EVENT] Типа передано, отправляю сигнал о закрытии потока");
                client.Send(Config.Encoder.GetBytes("00zdkf"), Config.Encoder.GetBytes("00zdkf").Length, RemoteIp.ToString(), Config.UDP_FILE_NAME_RECEIVE);

                LogApplication.WriteLog("[Передача файла EVENT] Конец");

                GlavnForm.Invoke((MethodInvoker) delegate
                {
                    item.SubItems[3].Text = "Передано";
                    new PopupNotifier()
                    {
                        TitleText   = "FileExchange",
                        ContentText = $"Файл {item.SubItems[1].Text} успешно передан"
                    }.Popup();
                });
                reader.Close();
            }).Start();
        }