static void Main() { Thread listenThread = new Thread(new ThreadStart(TcpServer.ListenRequest)); //созадем новый поток отдельно для получения listenThread.IsBackground = true; listenThread.Start(); //Dain(); var client = new TcpFileClient("192.168.100.10"); client.SendFileRequest("D:\\2\\4.txt|E:\\1.txt"); //для обратного var ans = RequestInteractivity.SendRequst(ip куда, RequestTipe.GetFileFromMe, "путь для загрузки|путь для сохранения"); //если нет то поменяешь в классе Request в функции DoResend там увидешь }
private MenuItem CreateDirectoryNodeForLocal(object direct) { ClassAboutFilesAdding directoryInfo = (ClassAboutFilesAdding)direct; string ip_sender = ""; if (directoryInfo.Sender == "Этот компьютер") { ip_sender = "127.0.0.1"; } else { ip_sender = directoryInfo.Sender; } var ans = GetDirectoryLocal(directoryInfo.RootLocationFilesOrDirectory + directoryInfo.nameFile); if (ans != "False") { var files = ans.Split('\n'); files[files.Length - 1] = null; object papka_ = null; System.Windows.Application.Current.Dispatcher.Invoke(DispatcherPriority.Normal, new Action( () => { WpfControlLibrary3.UserControl1 papka = new WpfControlLibrary3.UserControl1(); papka.Ip_From = directoryInfo.Sender; papka.Ip_To = directoryInfo.Receiver; papka.Path_From = directoryInfo.RootLocationFilesOrDirectory + directoryInfo.nameFile; papka.Path_To = directoryInfo.RemoteLocationFilesOrDirectory + directoryInfo.nameFile; papka.IsHeightValue = files.Length - 1; if (sbros != null) { WpfControlLibrary3.UserControl1 tyc = (WpfControlLibrary3.UserControl1)sbros; papka.OnCompleteTransmit += tyc.ChangedvalueForProgressBar; } papka_ = papka; })); var directoryNode = new MenuItem() { Title = directoryInfo.nameFile, flk = papka_ }; //создаем фалй или папку, пока что мы не знаем foreach (var file in files) { if (file != null) { string name = ""; List <(string, string, string)> ps = CuttingMessages(file); if (ps[0].Item3 == "-1") { name = ps[0].Item1 + "\\"; } else { name = ps[0].Item1; } ClassAboutFilesAdding files1 = new ClassAboutFilesAdding() // создаём экземпляр класса { nameFile = ps[0].Item1, // указываем имя файла time = ps[0].Item2, // указываем время создания sizeFile = ps[0].Item3, // указываем размер LocalParentPath = directoryInfo.RootLocationFilesOrDirectory, LocalParentName = directoryInfo.nameFile, RootLocationFilesOrDirectory = directoryInfo.RootLocationFilesOrDirectory + directoryInfo.nameFile + "\\", Receiver = directoryInfo.Receiver, Sender = directoryInfo.Sender, RemoteLocationFilesOrDirectory = directoryInfo.RemoteLocationFilesOrDirectory + directoryInfo.nameFile + "\\", RemoteParentName = directoryInfo.nameFile, RemoteParentPath = directoryInfo.RemoteLocationFilesOrDirectory }; if (ps[0].Item3 == "" || ps[0].Item3 == "-1") { sbros = directoryNode.flk; directoryNode.Items.Add(CreateDirectoryNodeForLocal(files1)); } else { System.Windows.Application.Current.Dispatcher.Invoke(DispatcherPriority.Normal, new Action( () => { UserControl1 flk = new UserControl1(); flk.Ip_From = files1.Sender; flk.Ip_To = files1.Receiver; flk.Path_From = files1.RootLocationFilesOrDirectory; flk.Path_To = files1.RemoteLocationFilesOrDirectory; WpfControlLibrary3.UserControl1 _papka = (WpfControlLibrary3.UserControl1)directoryNode.flk; flk.OnCompleteTransmit += _papka.ChangedvalueForProgressBar; if (files1.Sender != "Этот компьютер") // Если отправитель удаленный пк { var client = new TcpFileClient(files1.Sender); //Подписываемся на события client.SendingEvent += flk.ChangedvalueForProgressBar; client.FailEvent += flk.SendingFailMessage; client.ReadyEvent += flk.SendingSuccessfullyMessage; string path = flk.Path_To + files1.nameFile + "|" + flk.Path_From + files1.nameFile; client.SendFileRequest(path); //Thread receiveThread = new Thread(new ParameterizedThreadStart(client.SendFileRequest)); //receiveThread.IsBackground = true; //receiveThread.Start(path); } else // если отправитель текущий пк { var client = new TcpFileClient(files1.Receiver); //Подписываемся на события client.SendingEvent += flk.ChangedvalueForProgressBar; client.FailEvent += flk.SendingFailMessage; client.ReadyEvent += flk.SendingSuccessfullyMessage; string path = flk.Path_To + files1.nameFile + "|" + flk.Path_From + files1.nameFile; client.SendFileRequest(path); } directoryNode.Items.Add(new MenuItem() { Title = ps[0].Item1, flk = flk }); })); } } } return(directoryNode); } else { return(null); } }
public async void _calculatingPathForTransmitting(object obj, TcpServer tcpServer) { ClassAboutFilesAdding[] filesForTransmit = (ClassAboutFilesAdding[])obj; for (int i = 0; i < filesForTransmit.Length; i++) { // Если отправитель текущий пк if (filesForTransmit[i].Sender == "Этот компьютер") { // Если это файл if (filesForTransmit[i].sizeFile != "") { System.Windows.Application.Current.Dispatcher.Invoke(DispatcherPriority.Render, new Action( () => { UserControl1 flk = new UserControl1(); flk.Name_ = filesForTransmit[i].nameFile; flk.Ip_From = filesForTransmit[i].Sender; flk.Ip_To = filesForTransmit[i].Receiver; flk.Path_From = filesForTransmit[i].RootLocationFilesOrDirectory; flk.Path_To = filesForTransmit[i].RemoteLocationFilesOrDirectory; window.tiktak.Items.Add(new MenuItem() { Title = filesForTransmit[i].nameFile, flk = flk }); var client = new TcpFileClient(filesForTransmit[i].Receiver); //Подписываемся на события client.SendingEvent += flk.ChangedvalueForProgressBar; client.FailEvent += flk.SendingFailMessage; client.ReadyEvent += flk.SendingSuccessfullyMessage; ////var ans = RequestInteractivity.SendRequst(ip_to, RequestTipe.GetFileFromMe, flk.Path_To + "|" + flk.Path_From); string path = flk.Path_To + filesForTransmit[i].nameFile + "|" + flk.Path_From + filesForTransmit[i].nameFile; client.SendFileRequestFromMe(path); // Запуск асинхронного метода //var client = new TcpFileClient(filesForTransmit[i].Receiver); //Подписываемся на события //client.SendingEvent += flk.ChangedvalueForProgressBar; //client.FailEvent += flk.SendingFailMessage; //client.ReadyEvent += flk.SendingSuccessfullyMessage; ////var ans = RequestInteractivity.SendRequst(ip_to, RequestTipe.GetFileFromMe, flk.Path_To + "|" + flk.Path_From); //string path = flk.Path_To + filesForTransmit[i].nameFile + "|" + flk.Path_From + filesForTransmit[i].nameFile; //Thread receiveThread = new Thread(new ParameterizedThreadStart(client.SendFileRequest)); //receiveThread.IsBackground = true; //receiveThread.Start(path); })); // var ans = RequestInteractivity.SendRequst(filesForTransmit[i].Receiver, RequestTipe.GetFileFromMe, filesForTransmit[i].RemoteLocationFilesOrDirectory + filesForTransmit[i].nameFile + "|" + filesForTransmit[i].RootLocationFilesOrDirectory + filesForTransmit[i].nameFile); } // Если это папка else { await Task.Run(() => _calculatingForDirectory(filesForTransmit[i])); } } // Если отправитель удаленный пк else { // Если это файл if (filesForTransmit[i].sizeFile != "") { System.Windows.Application.Current.Dispatcher.Invoke(DispatcherPriority.Render, new Action( () => { UserControl1 flk = new UserControl1(); flk.Name_ = filesForTransmit[i].nameFile; flk.Ip_From = filesForTransmit[i].Sender; flk.Ip_To = filesForTransmit[i].Receiver; flk.Path_From = filesForTransmit[i].RootLocationFilesOrDirectory; flk.Path_To = filesForTransmit[i].RemoteLocationFilesOrDirectory; window.tiktak.Items.Add(new MenuItem() { Title = filesForTransmit[i].nameFile, flk = flk }); var client = new TcpFileClient(filesForTransmit[i].Sender); //Подписываемся на события client.SendingEvent += flk.ChangedvalueForProgressBar; client.FailEvent += flk.SendingFailMessage; client.ReadyEvent += flk.SendingSuccessfullyMessage; ////var ans = RequestInteractivity.SendRequst(ip_to, RequestTipe.GetFileFromMe, flk.Path_To + "|" + flk.Path_From); string path = flk.Path_To + filesForTransmit[i].nameFile + "|" + flk.Path_From + filesForTransmit[i].nameFile; client.SendFileRequest(path); // Запуск асинхронного метода })); } // Елси это папка else { await Task.Run(() => _calculatingForDirectory(filesForTransmit[i])); } } } }