58 lines
1.5 KiB
C#
58 lines
1.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
using System.Net.NetworkInformation;
|
|
using System.Net;
|
|
|
|
namespace Reseter2
|
|
{
|
|
internal class Pinger
|
|
{
|
|
private string NameOrAddress;
|
|
private int TimeoutCount;
|
|
private IPAddress Ip;
|
|
|
|
public Pinger(string nameOrAddress)
|
|
{
|
|
this.NameOrAddress = nameOrAddress;
|
|
}
|
|
public int Timeout() {
|
|
return TimeoutCount;
|
|
}
|
|
public PingResult PingHost()
|
|
{
|
|
bool pingable = false;
|
|
bool succes = false;
|
|
long ping = 0;
|
|
Ping pinger = null;
|
|
try
|
|
{
|
|
pinger = new Ping();
|
|
PingReply reply = pinger.Send(this.NameOrAddress);
|
|
pingable = reply.Status == IPStatus.TimedOut;
|
|
succes = reply.Status == IPStatus.Success;
|
|
ping = reply.RoundtripTime;
|
|
Ip = reply.Address;
|
|
}
|
|
catch (PingException)
|
|
{
|
|
// Discard PingExceptions and return false;
|
|
}
|
|
|
|
finally
|
|
{
|
|
if (pinger != null)
|
|
{
|
|
pinger.Dispose();
|
|
}
|
|
}
|
|
if (!succes) TimeoutCount++;
|
|
return new PingResult(ping, TimeoutCount, Ip, pingable, succes);
|
|
}
|
|
|
|
}
|
|
}
|