コード例 #1
0
        private void trvDir_BeforeSelect(object sender, TreeViewCancelEventArgs e)
        {
            ListViewItem item;

            before_select_request request_data = new before_select_request();

            request_data.Type = (int)PacketType.beforeSelect요청;

            lvwFiles.Items.Clear();
            request_data.dir_path = e.Node.FullPath;

            Packet.Serialize(request_data).CopyTo(this.sendBuffer, 0);

            this.Send();

            this.m_networkstream.Read(readBuffer, 0, 1024 * 4);
            before_select_response temp_response = (before_select_response)Packet.Desserialize(this.readBuffer);

            lvwFiles.Items.Clear();
            foreach (DirectoryInfo tdis in temp_response.diArray)
            {
                item = lvwFiles.Items.Add(tdis.Name);
                item.SubItems.Add("");
                item.SubItems.Add(tdis.LastWriteTime.ToString());
                item.ImageIndex = 1;
                item.Tag        = "D";
            }

            foreach (FileInfo fis in temp_response.fiArray)
            {
                item = lvwFiles.Items.Add(fis.Name);
                item.SubItems.Add(fis.Length.ToString());
                item.SubItems.Add(fis.LastWriteTime.ToString());
                if (fis.Extension.ToString().Contains("avi") || fis.Extension.ToString().Contains("mpg") || fis.Extension.ToString().Contains("mov"))
                {
                    item.ImageIndex = 0;
                }
                else if (fis.Extension.ToString().Contains("jpg") || fis.Extension.ToString().Contains("png"))
                {
                    item.ImageIndex = 2;
                }
                else if (fis.Extension.ToString().Contains("mp3") || fis.Extension.ToString().Contains("wav"))
                {
                    item.ImageIndex = 3;
                }
                else if (fis.Extension.ToString().Contains("docx") || fis.Extension.ToString().Contains("hwp") || fis.Extension.ToString().Contains("txt"))
                {
                    item.ImageIndex = 5;
                }
                else
                {
                    item.ImageIndex = 4;
                }

                item.Tag = "F";
            }
        }
コード例 #2
0
ファイル: Form1.cs プロジェクト: dongpilYu/musicPlayer
        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();
                }));
            }
        }