public void Collect(Byte[] Msg) { CastPacket Pac = (CastPacket)SerializationUnit.DeserializeObject(Msg); if (Pac == null) { return; } if (Pac.Data == null) { return; } lock (ObjLock) { List <CastPacket> ListPacket = null; Boolean bContain = DicCollectedPacket.TryGetValue(Pac.TimeStamp, out ListPacket); if (bContain == false) { ListPacket = new List <CastPacket>(); ListPacket.Add(Pac); DicCollectedPacket.Add(Pac.TimeStamp, ListPacket); } else { ListPacket.Add(Pac); } CurrentTimeStamp = Math.Max(Pac.TimeStamp, CurrentTimeStamp); } }
private void button_Enter_Click(object sender, EventArgs e) { if (string.Equals(textBox1_IP.Text, string.Empty)) { return; } if (string.Equals(textBox_Port.Text, string.Empty)) { return; } if (string.Equals(textBox_name.Text, string.Empty)) { return; } try { string IP = textBox1_IP.Text; int port = Convert.ToInt32(textBox_Port.Text); client = new TcpClient(); client.Connect(IP, port); stream = client.GetStream(); } catch (Exception ex) { MessageBox.Show("IP 와 PORT 를 확인해주세요."); return; } panel1.Visible = true; panel1.Enabled = true; panel2.Parent = panel1; panel2.Visible = true; panel2.Enabled = true; ///자신이름리스트에등록 ListViewItem li1 = new ListViewItem(); li1.Text = textBox_name.Text; li1.SubItems.Add(""); li1.SubItems.Add(""); listView1.Items.Add(li1); /// 자신name 서버로 전송 //packetType = LISTVIEW byte[] buffer = new byte[1024 * 4]; listPacket = new ListPacket(); listPacket.type = (int)PacketType.LISTVIEW; listPacket.listName = textBox_name.Text; Packet.Serialize(listPacket).CopyTo(buffer, 0); stream.Write(buffer, 0, buffer.Length); thread = new Thread(Socket_C); thread.Start(); }
public void Collect(Byte[] Msg) { //CastPacket Pac = (CastPacket)SerializationUnit.DeserializeObject(Msg); //strjson.Add("TimeStamp", TimeStamp); //strjson.Add("total", total); //strjson.Add("index", total); //strjson.Add("data", chunk); //strjson.Add("dataOffset", chunkLength * chunks); //strjson.Add("totalLength", data.Length); long TimeStamp = getLong(Msg, 0); int total = getInt(Msg, 8); int index = getInt(Msg, 12); int dataOffset = getInt(Msg, 16); int totalLength = getInt(Msg, 20); byte[] content = subBytes(Msg, 24, Msg.Length - 24); Console.WriteLine("TimeStamp=" + TimeStamp + ",total=" + total + ",index=" + index + ",dataOffset=" + dataOffset + ",totalLength=" + totalLength); //JObject Pac = JObject.Parse(str); if (content == null) { return; } // if (Pac.Data == null) // return; lock (ObjLock) { List <byte[]> ListPacket = null; Boolean bContain = DicCollectedPacket.TryGetValue(TimeStamp, out ListPacket); if (bContain == false) { ListPacket = new List <byte[]>(); ListPacket.Add(Msg); DicCollectedPacket.Add(TimeStamp, ListPacket); } else { ListPacket.Add(Msg); } Console.WriteLine("Collect tostring>>>" + ListPacket.ToString()); CurrentTimeStamp = Math.Max(TimeStamp, CurrentTimeStamp); } }
public void handle() { try { int nRead = 0; byte[] buffer = new byte[1024 * 4]; while (true) { networkStream.Flush(); nRead = 0; nRead = networkStream.Read(buffer, 0, buffer.Length); Packet packet = (Packet)Packet.Desserialize(buffer); if (packet == null) { Console.WriteLine("handle null "); } switch ((int)packet.type) { case (int)PacketType.LISTVIEW: { listPacket = (ListPacket)Packet.Desserialize(buffer); this.name = listPacket.listName; isAddName = true; Console.WriteLine("handle listviewtype " + listPacket.listName); break; } case (int)PacketType.UPLOAD: { Console.WriteLine("handle upload type"); Upload(2); break; } case (int)PacketType.LOCK: { lockPacket = (LockPacket)Packet.Desserialize(buffer); lockPageNum = lockPacket.pageNum; lockPptNum = lockPacket.pptNum; Console.WriteLine("handle lock type" + lockPacket.pageNum); askLock = true; break; } case (int)PacketType.SAVE: { Console.WriteLine("handle client : save "); savePacket = (SavePacket)Packet.Desserialize(buffer); isAddSlide = savePacket.isAdd; savePptNum = savePacket.pptNum; savePageNum = savePacket.pageNum; long fileSize = savePacket.fileSize; //저장할슬라이드가있는 피피티파일을 읽어와 'slide_handle.pptx'생성후 저장 string _Path = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); byte[] myReadBuffer = new byte[fileSize]; int numberOfBytesRead = 0; saveFileName = _Path + @"\" + "slide_handle.pptx"; FileInfo fileInfo = new FileInfo(saveFileName); if (fileInfo.Exists == true) { File.Delete(this.saveFileName); } FileStream fs = new FileStream(saveFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None); numberOfBytesRead = networkStream.Read(myReadBuffer, 0, myReadBuffer.Length); fs.Write(myReadBuffer, 0, numberOfBytesRead); fs.Close(); askSave = true; break; } } } } catch { if (client.Connected == false) { Console.WriteLine("connected end"); isConnect = false; thread.Abort(); client.Close(); } } }