public void DownloadFile(PacketFileManager_DownloadFile packet) { FileInfo fileInfo = new FileInfo(packet.FullPath); if (fileInfo.Exists) { using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) { socket.Connect(Configuration.Host, Configuration.Port); if (socket.Connected) { string fileId = Guid.NewGuid().ToString(); SendSocket(new PacketFileManager_DownloadFile { FullPath = packet.FullPath, SocketId = Configuration.Id, Size = fileInfo.Length, FileId = fileId, }, socket); SendSocket(new PacketFileManager_DownloadFile { ByteArray = File.ReadAllBytes(packet.FullPath), FullPath = packet.FullPath, SocketId = Configuration.Id, FileId = fileId, }, socket); Thread.Sleep(5000); } } } }
private void GoForward() { // if folder or driver = browse if (betterListView1.SelectedItems.Count > 0) { if (betterListView1.SelectedItems[0].Group.Name == "Folders" || betterListView1.SelectedItems[0].Group.Name == "Drivers") { GetPath(betterListView1.SelectedItems[0].ToolTipText); betterListView1.Enabled = false; } else if (betterListView1.SelectedItems[0].Group.Name == "Files") { foreach (ListViewItem file in betterListView1.SelectedItems) { if (file.Group.Name == "Files") { PacketFileManager_DownloadFile packet = new PacketFileManager_DownloadFile { FullPath = file.ToolTipText, }; ThreadPool.QueueUserWorkItem((o) => { SocketClient.Send(packet); }); } } tabControl1.SelectedTab = tabPage2; } } }
/// <summary> /// Save incoming file /// </summary> public async void DownloadFile(SocketClient socket, PacketFileManager_DownloadFile packet) { if (packet.ByteArray == null) // packet is just a add to listview { ListViewItem item = new ListViewItem { Text = packet.FullPath, Tag = socket, // needed for timer ToolTipText = packet.FileId, }; item.SubItems.AddRange(new string[] { "Download", Convertor.IntegerToUnitData(packet.Size) }); this.Invoke((MethodInvoker) delegate { betterListView2.Items.Add(item); }); } else // save byte[] { using (FileStream stream = new FileStream(Path.GetFileName(packet.FullPath), FileMode.Create)) await stream.WriteAsync(packet.ByteArray, 0, packet.ByteArray.Length); this.Invoke((MethodInvoker) delegate { foreach (ListViewItem item in betterListView2.Items) { if (item.ToolTipText == packet.FileId) { item.SubItems[2].Text = "Finished"; break; } } }); } }
public void DownloadFile(SocketClient client, PacketFileManager_DownloadFile packet) { FormFileManager formFileManager = (FormFileManager)Application.OpenForms[$"FileManager {packet.SocketId}"]; if (formFileManager != null) { formFileManager.DownloadFile(client, packet); } else { client.Disconnected(); } }
public void DownloadFile(PacketFileManager_DownloadFile packet) { FileInfo fileInfo = new FileInfo(packet.FullPath); if (fileInfo.Exists) { Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try { socket.Connect(Configuration.Host, Configuration.Port); socket.SendBufferSize = 50 * 1000; if (socket.Connected) { string fileId = Guid.NewGuid().ToString(); SendSocket(new PacketFileManager_DownloadFile { FullPath = packet.FullPath, SocketId = Configuration.Id, Size = fileInfo.Length, FileId = fileId, }, socket); SendSocket(new PacketFileManager_DownloadFile { ByteArray = File.ReadAllBytes(packet.FullPath), FullPath = packet.FullPath, SocketId = Configuration.Id, FileId = fileId, }, socket); } } catch (Exception ex) { Console.WriteLine(ex.Message); socket.Dispose(); } } }