43 lines
1.1 KiB
C#
43 lines
1.1 KiB
C#
using System;
|
|
using System.Net.NetworkInformation;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace BITable
|
|
{
|
|
public static class Util
|
|
{
|
|
public static bool IsPingable(string destinationIPAddress, out long pingTime, int timeOut = 500)
|
|
{
|
|
var pingTask = Task.Factory.StartNew(async () =>
|
|
{
|
|
Ping pinger = new Ping();
|
|
try
|
|
{
|
|
PingReply reply = await pinger.SendPingAsync(destinationIPAddress, timeOut);
|
|
return reply;
|
|
}
|
|
catch (Exception)
|
|
{
|
|
return null;
|
|
}
|
|
finally
|
|
{
|
|
pinger.Dispose();
|
|
}
|
|
});
|
|
|
|
var pingResult = pingTask.Result.Result;
|
|
if (pingResult != null && pingResult.Status == IPStatus.Success)
|
|
{
|
|
pingTime = pingResult.RoundtripTime;
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
pingTime = -1;
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|