Ejemplo n.º 1
0
        /// <summary>
        /// Synchronous:
        ///     All result data can be optained via the Results property afterwards
        ///
        /// </summary>
        public void ExecuteScan()
        {
            List <IPAddress> ipAddresses = null;

            switch (_settings.IpMode)
            {
            case EipScanMode.AllSubnet:
                ipAddresses = NetMask.GetAllIp();
                break;

            case EipScanMode.Subnet:
                ipAddresses = NetMask.GetIpsInMask(((ScanStorageMaskData)_settings.Storage).MaskData.ToArray());
                break;

            case EipScanMode.Range:
                throw new NotImplementedException();

            case EipScanMode.List:
                ipAddresses = ((ScanStorageListData)_settings.Storage).IpAddresses;
                break;

            default:
                break;
            }
            if (ipAddresses == null)
            {
                throw new Exception("No ip Addresses in Stack");
            }
            _ps = new PingScan(pingScanSuccessCb, _settings.PingTimeout);

            _ps.InitScan(ipAddresses.ToArray());

            if (_settings.Mode == EScanMode.Synchronous)
            {
                while (ActiveTCPScan.Count > 0 || !_ps.PingCompleted)
                {
                    Thread.Sleep(100);
                }
            }
        }