private void Callback(IAsyncResult ar) { ScanArgs data = ((ScanArgs)ar.AsyncState); try { if (data.IsTimeouted) { return; } data.Set.Set(); if (!IsScanning) { return; } data.Soket.EndConnect(ar); UIThread.Execute(() => () => { _results.Add(new IpResult(data.Ip, this._selfIp)); }); } catch (Exception e) { Console.WriteLine(e.Message); } finally { data.Soket.Close(); int count = Interlocked.Increment(ref _count); Percent = count * 100 / data.Ips.Length; if (count == data.Ips.Length) { IsScanning = false; } } }
private void Scan(string[] ipList) { if (ipList.Length != 0) { IsScanning = true; } _count = 0; Percent = 0; Parallel.ForEach(ipList, ip => { if (!IsScanning) { return; } IPAddress ipAddress = IPAddress.Parse(ip); IPEndPoint endPoint = new IPEndPoint(ipAddress, 3337); Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); var state = new ScanArgs(socket, ipList, ip); socket.BeginConnect(endPoint, Callback, state); if (!state.Set.WaitOne(Timeout)) { state.IsTimeouted = true; socket.Close(); } }); }
/// <summary> /// Application entry point. /// </summary> /// <param name="args">Command-line arguments.</param> public static void Main(string[] args) { log4net.Config.DOMConfigurator.Configure(); ScanJob job = new ScanJob(ScanArgs.Parse(args)); job.Run(); }
/// <summary> /// The IPAddressGenerated event handler. /// </summary> /// <param name="sender">The sender IPScanner base class.</param> /// <param name="e">The ScanArgs, containing the IP address generated.</param> private static void IPGenerated(object sender, ScanArgs e) { if (IsPingable(e.IPAddress)) { Console.WriteLine($"[{e.IPAddress}] Ping response received."); } }
/// <summary> /// Обработка события сканирования сканера штрихкодов. /// </summary> /// <param name="text">Отсканированный текст.</param> public virtual void OnScan(string text) { if (string.IsNullOrEmpty(text)) { return; } var ev = Scan; if (ev != null) { ScanArgs sa = new ScanArgs(text); ev(sa); } }
public ScanResult ScanImage(ScanArgs args) { ScanResult scanResult = new ScanResult(); List <string> cmdLineArgs = new List <string>(); if (!String.IsNullOrEmpty(args.device)) { string staticPath = "ScannedFiles/images"; string outputLocation = Path.Combine(Directory.GetCurrentDirectory(), "ScannedFiles", "images"); scanResult.scanId = Guid.NewGuid().ToString(); scanResult.fileStaticPath = $"/{staticPath}"; string fileNameFilter = string.Format("{0}-*.{1}", scanResult.scanId, args.format); string filePathPattern = string.Format("{0}/{1}-%d.{2}", outputLocation, scanResult.scanId, args.format); cmdLineArgs.AddRange(new string[] { string.Format("-d '{0}'", args.device), string.Format("--source '{0}'", args.source), string.Format("--format={0}", args.format), string.Format("--resolution {0}", args.resolution), //"-x 215 -y 297" }); if (!String.IsNullOrEmpty(args.mode)) { cmdLineArgs.Add(string.Format("--mode '{0}'", args.mode)); } if (args.source == ScanSource.FlatBed) { cmdLineArgs.Add(string.Format("> {0}", filePathPattern.Replace("%d", "1"))); } else { cmdLineArgs.Add(string.Format("--batch={0}", filePathPattern)); } var shellStd = _shell.Exec(scanimage, cmdLineArgs); Console.WriteLine($"OUTPUT {shellStd.stdout}"); Console.WriteLine($"ERROR {shellStd.stderr}"); scanResult.fileNames = Directory.EnumerateFiles(outputLocation, fileNameFilter, SearchOption.AllDirectories) .Select(file => { return(Path.GetFileName(file)); }).ToList(); if ((!String.IsNullOrEmpty(shellStd.stdout) && String.IsNullOrEmpty(shellStd.stderr) && String.IsNullOrEmpty(shellStd.exception)) || scanResult.fileNames.Count > 0) { Console.WriteLine(">>>>>>>> SUCCEED <<<<<<<<<<<<"); Console.WriteLine(shellStd.stdout); } else { Console.WriteLine(">>>>>>>> ERROR <<<<<<<<<<<<"); Console.WriteLine(shellStd.stderr); } } else { throw new Exception("Scanner device name is required to scan"); } return(scanResult); }
private void MobileComputer_Scan(ScanArgs e) { TextView textView = FindViewById <TextView>(Resource.Id.textResult); textView.Text = e.Text; }