private void Receive()//받자 파일을 { while (this.m_blsConnect) { try { this.m_NetStream.Read(this.readBuffer, 0, readBuffer.Length); } catch { this.m_blsConnect = false; this.m_NetStream = null; } FileData temp = (FileData)FileData.Deserialize(readBuffer); switch ((int)temp.Type) { case (int)FileDataType.로그인: { break; } case (int)FileDataType.일리스트: { filelist fList = (filelist)FileData.Deserialize(readBuffer); string list = fList.fileList; string[] strset = list.Split('%'); for (int i = 1; i < strset.Length; i = i + 2) { ListViewItem lvi = new ListViewItem(strset[i - 1]); lvi.SubItems.Add(strset[i]); metroListView1.Items.Add(lvi); } break; } case (int)FileDataType.텍스트파일: { textFile tempText = (textFile)FileData.Deserialize(readBuffer); myText.fillText(tempText.text, tempText.userName); break; } case (int)FileDataType.일: { bool open = false; myFile file = (myFile)FileData.Deserialize(readBuffer); FileStream fs = new FileStream(drPath + "\\" + file.filename, FileMode.Create, FileAccess.Write); fs.Close(); fs = new FileStream(drPath + "\\" + file.filename, FileMode.Append, FileAccess.Write); for (int i = 0; i < (int)file.size / (1024 * 4); i++) //파일크기만큼 반복문 { if (open) { m_NetStream.Read(readBuffer, 0, readBuffer.Length); file = (myFile)FileData.Deserialize(readBuffer); } fs.Write(file.data, 0, 1024 * 4); open = true; } if (open) { m_NetStream.Read(readBuffer, 0, readBuffer.Length); } file = (myFile)FileData.Deserialize(readBuffer); fs.Write(file.data, 0, (int)file.size % (1024 * 4)); break; } case (int)FileDataType.접속목록: { listItem listitem = (listItem)FileData.Deserialize(readBuffer); if (listitem.index != -1) { listView1.Items.RemoveAt(listitem.index); break; } ListViewItem item; item = new ListViewItem(listitem.list); listView1.Items.Add(item); break; } case (int)FileDataType.일체크: { fileCheck fCheck = (fileCheck)FileData.Deserialize(readBuffer); if (fCheck.fileNeed == 0) { textFile tFile = new textFile(backup); tFile.Type = (int)FileDataType.텍스트파일; tFile.userName = textBox3.Text; tFile.userIndex = fCheck.fileNumber; //원래는 파일넘버가 이게 아니지만 유저 인덱스 넘겨줌 sendBuffer = FileData.Serialize(tFile); m_NetStream.Write(sendBuffer, 0, sendBuffer.Length); m_NetStream.Flush(); } break; } default: { break; } } } }