Example #1
0
        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);
            }
        }
Example #2
0
        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();
        }
Example #3
0
        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);
            }
        }
Example #4
0
        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();
                }
            }
        }