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"; } }
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(); })); } }