예제 #1
0
        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);
                    }
                }
            }
        }
예제 #2
0
        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;
                }
            }
        }
예제 #3
0
        /// <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;
                        }
                    }
                });
            }
        }
예제 #4
0
        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();
            }
        }
예제 #5
0
        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();
                }
            }
        }