private void Form1_Load(object sender, EventArgs e) { scanPorts = new ScanPortData(); scanPorts.Ip = "85.183.54.25"; scanPorts.From = 1; scanPorts.To = 1024; propertyGrid1.SelectedObject = scanPorts; scanIps = new ScanIpData(); scanIps.Start = "85.183.54.0"; scanIps.Stop = "85.183.54.50"; scanIps.Port = 80; propertyGrid2.SelectedObject = scanIps; prefs = new PrefsData(); prefs.Timeout = 5000; prefs.Check401 = true; prefs.AutoBrowse = true; prefs.Browser = "firefox"; propertyGrid3.SelectedObject = prefs; prefs.DoLog = true; unpickle(); }
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { scanPorts = (ScanPortData)propertyGrid1.SelectedObject; prefs = (PrefsData)propertyGrid3.SelectedObject; int timeout = prefs.Timeout; MethodInvoker ScanStart = delegate { scannedPorts.Items.Clear(); progressBar1.Maximum = scanPorts.To - scanPorts.From; progressBar1.Value = 0; }; Invoke(ScanStart); PortScanner[] scanner = new PortScanner[16]; ManualResetEvent[] reset = new ManualResetEvent[16]; for (int i = 0; i < 16; i++) { scanner[i] = new PortScanner(scanPorts.Ip, 0); scanner[i].timeout = prefs.timeout; } while (scanPorts.From < scanPorts.To && ((buttonStart.Text == "Stop"))) { for (int i = 0; i < 16; i++) { scanner[i].PORT = scanPorts.From++; reset[i] = new ManualResetEvent(false); ThreadPool.QueueUserWorkItem(scanner[i].Run, reset[i]); } WaitHandle.WaitAll(reset, timeout); for (int i = 0; i < 16; i++) { bool hit = (scanner[i].result > 0); MethodInvoker ScanUpdate = delegate { int p = scanner[i].PORT; progressBar1.Increment(1); status.Text = p + " " + ports[p]; scanPorts.From = p; propertyGrid1.SelectedObject = scanPorts; string name = p + "\t" + ports[p]; if ((hit) && (!scannedPorts.Items.Contains(name))) scannedPorts.Items.Add(name); }; Invoke(ScanUpdate); } } buttonStart.Text = "Start"; //int ntw = 0; //int ncp = 0; //ThreadPool.GetAvailableThreads(out ntw, out ncp); //Thread.Sleep(600); }