Guest User

Untitled

a guest
Apr 21st, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.53 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Net.NetworkInformation;
  5. using System.Threading.Tasks;
  6.  
  7. namespace SweePing
  8. {
  9. class Program
  10. {
  11. static void Main(String[] args)
  12. {
  13. var p = new Program();
  14.  
  15. var _stopWatch = Stopwatch.StartNew();
  16. p.PingSweepAsync("10.250.0.", 1, 254).GetAwaiter().GetResult();
  17. _stopWatch.Stop();
  18. Console.WriteLine($"{p.HostsUp} devices found! Elapsed time: {_stopWatch.ElapsedMilliseconds}ms");
  19. if (Debugger.IsAttached)
  20. {
  21. Console.WriteLine("Press ENTER to EXIT . . .");
  22. Console.ReadLine();
  23. }
  24. }
  25.  
  26. private Int32 _timeout = 100;
  27. static Object LockObj = new Object();
  28.  
  29.  
  30. public Int32 HostsUp { get; set; } = 0;
  31.  
  32. public async Task PingSweepAsync(String baseIp, Int16 start, Int16 end)
  33. {
  34. HostsUp = 0;
  35.  
  36. var tasks = new List<Task>();
  37.  
  38. for (var i = start; i <= end; i++)
  39. {
  40. tasks.Add(PingAndUpdateAsync(baseIp + i.ToString()));
  41. }
  42.  
  43. await Task.WhenAll(tasks);
  44. }
  45.  
  46. private async Task PingAndUpdateAsync(String ip)
  47. {
  48. var ping = new Ping();
  49. var reply = await ping.SendPingAsync(ip, _timeout);
  50. if (reply.Status == IPStatus.Success)
  51. {
  52. lock (LockObj)
  53. {
  54. HostsUp++;
  55. }
  56. }
  57. }
  58. }
  59. }
Add Comment
Please, Sign In to add comment