Exemple #1
0
 public void StopStream()
 {
     if (CaptureThread != null)
     {
         int delayMillis = 1000;
         try
         {
             IsRunning = false;
             CaptureThread.Join(delayMillis);
             if (CaptureThread.IsAlive)
             {
                 Console.WriteLine("Tempo excedido; Thread ainda não terminou seu processamento");
             }
             else
             {
                 Console.WriteLine("thread terminou de uma forma não bloqueante!");
             }
         }
         catch (ThreadInterruptedException e)
         {
             Console.WriteLine(e + "Thread foi interrompida por alguma excessão lançada");
         }
         //CaptureThread.Join();
         //CaptureThread = null;
         SenseManager.Dispose();
         Session.Dispose();
     }
 }
Exemple #2
0
        public void StartWatching()
        {
            DevicesAndPackets = new Dictionary <ICaptureDevice, ArrayList>();
            DateTime DateToSavePcap = DateTime.Now.AddMinutes(MinToSaveSniff);

            while (keepRunning)
            {
                System.Threading.Thread.Sleep(1000);
                if (Devices == null)
                {
                    Devices = CaptureDeviceList.Instance;
                    foreach (ICaptureDevice Device in Devices)
                    {
                        StartDeviceSniff(Device);
                    }
                }
                else
                {
                    CaptureDeviceList NewDevices = CaptureDeviceList.Instance;
                    foreach (ICaptureDevice NewDevice in NewDevices)
                    {
                        bool DeviceIsOld = false;
                        foreach (ICaptureDevice OldDevice in Devices)
                        {
                            if (Devices.Contains(NewDevice))
                            {
                                DeviceIsOld = true;
                                break;
                            }
                        }

                        if (!DeviceIsOld)
                        {
                            StartDeviceSniff(NewDevice);
                        }
                    }

                    Devices = NewDevices;
                }
                if (DateTime.Now.CompareTo(DateToSavePcap) >= 0)
                {
                    DateToSavePcap = DateToSavePcap.AddMinutes(MinToSaveSniff);
                    SavePackets();
                }
            }
            foreach (Thread CaptureThread in CaptureThreads)
            {
                CaptureThread.Abort();
            }
        }