Ping a host
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Threading;
public static class NetUtility
{
public static bool Ping(string host, int port)
{
return Ping(host, port, TimeSpan.MaxValue);
}
public static bool Ping(string host, int port, out TimeSpan elapsed)
{
return Ping(host, port, TimeSpan.MaxValue, out elapsed);
}
public static bool Ping(string host, int port, TimeSpan timeout)
{
TimeSpan elapsed;
return Ping(host, port, timeout, out elapsed);
}
public static bool Ping(string host, int port, TimeSpan timeout, out TimeSpan elapsed)
{
using (TcpClient tcp = new TcpClient())
{
DateTime start = DateTime.Now;
IAsyncResult result = tcp.BeginConnect(host, port, null, null);
WaitHandle wait = result.AsyncWaitHandle;
bool ok = true;
try
{
if (!result.AsyncWaitHandle.WaitOne(timeout, false))
{
tcp.Close();
ok = false;
}
tcp.EndConnect(result);
}
catch
{
ok = false;
}
finally
{
wait.Close();
}
DateTime stop = DateTime.Now;
elapsed = stop.Subtract(start);
return ok;
}
}
}
Related examples in the same category