public void detail_request()
        {
            ListViewItem temp_item = lvwFiles.SelectedItems[0];

            detail_info_request temp_request = new detail_info_request();

            temp_request.file_type   = temp_item.Tag.ToString();
            temp_request.detail_path = trvDir.SelectedNode.FullPath + "\\" + temp_item.Text;
            temp_request.Type        = (int)PacketType.상세정보요청;

            Packet.Serialize(temp_request).CopyTo(this.sendBuffer, 0);
            this.Send();

            this.m_networkstream.Read(readBuffer, 0, 1024 * 4);
            detail_info_response temp_response = new detail_info_response();

            temp_response = (detail_info_response)Packet.Desserialize(this.readBuffer);

            Form2 detail_form;

            if (temp_response.dir_type == "D")
            {
                detail_form = new Form2(temp_item.Text, "Directory",
                                        temp_request.detail_path, "",
                                        temp_response.di_info.CreationTime.ToString(),
                                        temp_response.di_info.LastWriteTime.ToString(),
                                        temp_response.di_info.LastAccessTime.ToString());
                detail_form.picture_box_image_Change("folder");
            }
            else
            {
                detail_form = new Form2(temp_item.Text, temp_response.file_info.Extension.ToString().Replace(".", ""),
                                        temp_request.detail_path, temp_response.file_info.Length + " 바이트",
                                        temp_response.file_info.CreationTime.ToString(),
                                        temp_response.file_info.LastWriteTime.ToString(),
                                        temp_response.file_info.LastAccessTime.ToString());
                if (temp_response.file_info.Extension.ToString().Contains("avi") || temp_response.file_info.Extension.ToString().Contains("mpg") || temp_response.file_info.Extension.ToString().Contains("mov"))
                {
                    detail_form.picture_box_image_Change("avi");
                }
                else if (temp_response.file_info.Extension.ToString().Contains("jpg") || temp_response.file_info.Extension.ToString().Contains("png"))
                {
                    detail_form.picture_box_image_Change("image");
                }
                else if (temp_response.file_info.Extension.ToString().Contains("mp3") || temp_response.file_info.Extension.ToString().Contains("wav"))
                {
                    detail_form.picture_box_image_Change("music");
                }
                else if (temp_response.file_info.Extension.ToString().Contains("docx") || temp_response.file_info.Extension.ToString().Contains("hwp") || temp_response.file_info.Extension.ToString().Contains("txt"))
                {
                    detail_form.picture_box_image_Change("text");
                }
                else
                {
                    detail_form.picture_box_image_Change("temp");
                }
            }
            detail_form.Show();
        }
Beispiel #2
0
        public void Receive()
        {
            try
            {
                while (m_bConnect)
                {
                    try
                    {
                        this.m_networkstream.Read(readBuffer, 0, 1024 * 4);
                    }
                    catch
                    {
                        disconnect();
                    }


                    Packet packet = (Packet)Packet.Desserialize(this.readBuffer);

                    switch ((int)packet.Type)
                    {
                    case (int)PacketType.초기화데이터요청:
                    {
                        string             Drv = path_text_box.Text;
                        init_data_response temp_init_response = new init_data_response();

                        temp_init_response.rootName = path_text_box.Text;
                        Packet.Serialize(temp_init_response).CopyTo(this.sendBuffer, 0);

                        this.Send();

                        break;
                    }

                    case (int)PacketType.beforeExpand요청:
                    {
                        before_expand_request temp_request = (before_expand_request)Packet.Desserialize(this.readBuffer);

                        DirectoryInfo          dir = new DirectoryInfo(temp_request.dir_path);
                        DirectoryInfo[]        di  = dir.GetDirectories();
                        before_expand_response temp_before_expand_response = new before_expand_response();
                        ArrayList temp_arr = new ArrayList();

                        int count = 0;
                        foreach (DirectoryInfo dirs in di)
                        {
                            DirectoryInfo[] temp_di;
                            string          temp_path = temp_request.dir_path.ToString() + "\\" + dirs.Name.ToString();

                            DirectoryInfo temp_dir      = new DirectoryInfo(temp_path);
                            dir_info      temp_dir_info = new dir_info();
                            temp_di = temp_dir.GetDirectories();
                            temp_dir_info.file_name = dirs.Name;
                            if (temp_di.Length > 0)
                            {
                                temp_dir_info.is_dir = true;
                            }
                            else
                            {
                                temp_dir_info.is_dir = false;
                            }

                            temp_arr.Add(temp_dir_info);
                            count++;
                        }

                        temp_before_expand_response.dir_list = new dir_info[count];

                        count = 0;
                        foreach (dir_info dirs in temp_arr)
                        {
                            temp_before_expand_response.dir_list[count].file_name = dirs.file_name;
                            temp_before_expand_response.dir_list[count].is_dir    = dirs.is_dir;
                            count++;
                        }

                        temp_before_expand_response.Type = (int)PacketType.beforeExpand요청;
                        Packet.Serialize(temp_before_expand_response).CopyTo(this.sendBuffer, 0);

                        this.Send();

                        break;
                    }

                    case (int)PacketType.beforeSelect요청:
                    {
                        DirectoryInfo   di;
                        DirectoryInfo[] diArray;
                        FileInfo[]      fiArray;

                        before_select_request temp_request = (before_select_request)Packet.Desserialize(this.readBuffer);
                        di = new DirectoryInfo(temp_request.dir_path);

                        diArray = di.GetDirectories();
                        fiArray = di.GetFiles();

                        before_select_response temp_response = new before_select_response();
                        temp_response.fiArray_len = fiArray.Length;
                        temp_response.diArray_len = diArray.Length;
                        temp_response.fiArray     = new FileInfo[fiArray.Length];
                        temp_response.diArray     = new DirectoryInfo[diArray.Length];

                        int count = 0;
                        foreach (FileInfo temp_info in fiArray)
                        {
                            temp_response.fiArray[count++] = temp_info;
                        }
                        count = 0;
                        foreach (DirectoryInfo temp_info in diArray)
                        {
                            temp_response.diArray[count++] = temp_info;
                        }

                        temp_response.Type = (int)PacketType.beforeSelect응답;
                        Packet.Serialize(temp_response).CopyTo(this.sendBuffer, 0);

                        this.Send();
                        break;
                    }

                    case (int)PacketType.상세정보요청:
                    {
                        detail_info_request  temp_request  = (detail_info_request)Packet.Desserialize(this.readBuffer);
                        detail_info_response temp_response = new detail_info_response();

                        if (temp_request.file_type == "D")
                        {
                            temp_response.dir_type  = "D";
                            temp_response.di_info   = new DirectoryInfo(temp_request.detail_path);
                            temp_response.file_info = null;
                        }
                        else
                        {
                            temp_response.dir_type  = "F";
                            temp_response.file_info = new FileInfo(temp_request.detail_path);
                            temp_response.di_info   = null;
                        }

                        temp_response.Type = (int)PacketType.상세정보응답;
                        Packet.Serialize(temp_response).CopyTo(this.sendBuffer, 0);

                        this.Send();
                        break;
                    }
                    }
                }
            }
            catch
            {
                this.Invoke(new MethodInvoker(delegate()
                {
                    button2.Text      = "서버켜기";
                    button2.ForeColor = Color.Black;
                    log_txt_box.AppendText("접속 종료...\n");
                    disconnect();
                }));
            }
        }