示例#1
0
 private void InsertPackage(AnalyzePackage package)
 {
     if (this.InvokeRequired)
     {
         try { this.Invoke(new MethodInvoker(() => InsertPackage(package))); }
         catch (ObjectDisposedException) { }
     }
     else
     {
         bool showIt = false;
         if (cbFillter.SelectedIndex == 0 && cbProtocol.SelectedIndex == 0)
         {
             showIt = true;
         }
         else if (cbFillter.SelectedIndex != 0 && cbProtocol.SelectedIndex == 0 && (package.SrcIP.ToString().Equals(cbFillter.Text) || package.DesIP.ToString().Equals(cbFillter.Text)))
         {
             showIt = true;
         }
         else if (cbFillter.SelectedIndex == 0 && cbProtocol.SelectedIndex != 0 && package.Protocol.ToString().Equals(cbProtocol.Text))
         {
             showIt = true;
         }
         else if (cbFillter.SelectedIndex != 0 && cbProtocol.SelectedIndex != 0 && (package.SrcIP.ToString().Equals(cbFillter.Text) || package.DesIP.ToString().Equals(cbFillter.Text)) && package.Protocol.ToString().Equals(cbProtocol.Text))
         {
             showIt = true;
         }
         if (showIt)
         {
             ListViewItem lvi = new ListViewItem((sw.ElapsedMilliseconds / 1000F).ToString());
             lvi.SubItems.Add(package.SrcIP.ToString());
             lvi.SubItems.Add(package.DesIP.ToString());
             lvi.SubItems.Add(package.Protocol.ToString());
             lvi.SubItems.Add("0");
             lvSkt.Items.Insert(0, lvi);
         }
         if (!cbFillter.Items.Contains(package.SrcIP.ToString()))
         {
             cbFillter.Items.Add(package.SrcIP.ToString());
         }
         else if (!cbFillter.Items.Contains(package.DesIP.ToString()))
         {
             cbFillter.Items.Add(package.DesIP.ToString());
         }
         if (!cbProtocol.Items.Contains(package.Protocol.ToString()))
         {
             cbProtocol.Items.Add(package.Protocol.ToString());
         }
         if (lvSkt.Items.Count >= 100)
         {
             lvSkt.Items.RemoveAt(lvSkt.Items.Count - 1);
         }
         Application.DoEvents();
     }
 }
示例#2
0
 /// <summary>自緩緩衝暫存區中取得已拆解完畢的封包資料。</summary>
 /// <returns>已拆解完畢的封包資料。</returns>
 public AnalyzePackage GetPackage()
 {
     _mGetPackage = null;
     lock (_qPackage)
     {
         if (_qPackage.Count != 0)
         {
             _mGetPackage = _qPackage.Dequeue();
         }
     }
     return(_mGetPackage);
 }
示例#3
0
        /// <summary>接收到封包資料。</summary>
        /// <param name="SyncData">非同步接收的資料。</param>
        private void OnReceive(IAsyncResult SyncData)
        {
            // get data length
            int iRecvLen_ = _mSocket.EndReceive(SyncData);

            _mPackage = new AnalyzePackage(_byBuff, iRecvLen_);
            lock (_qPackage)
            {
                _qPackage.Enqueue(_mPackage);
            }
            this.BeginReceive();
        }
示例#4
0
        private void MonitorTask()
        {
            AnalyzePackage ap = null;

            while (!_Exit)
            {
                if (_Svr.PackageCount == 0)
                {
                    continue;
                }
                while (!_Exit && _Svr.PackageCount != 0)
                {
                    ap = _Svr.GetPackage();
                    InsertPackage(ap);
                    Thread.Sleep(20);
                }
            }
        }