BiTable/BITable/Util.cs
2020-06-20 19:09:46 +07:00

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;
}
}
}
}