Hola,
Tengo este codigo(obtenido de la pagina oficial de MSDN) para realizar un Ping a un equipo:
public static void Main (string[] args)
{
Ping pingSender = new Ping ();
PingOptions options = new PingOptions ();
// Use the default Ttl value which is 128,
// but change the fragmentation behavior.
options.DontFragment = true;
// Create a buffer of 32 bytes of data to be transmitted.
string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
byte[] buffer = Encoding.ASCII.GetBytes (data);
int timeout = 120;
PingReply reply = pingSender.Send (args[0], timeout, buffer, options);
if (reply.Status == IPStatus.Success)
{
Console.WriteLine ("Address: {0}", reply.Address.ToString ());
Console.WriteLine ("RoundTrip time: {0}", reply.RoundtripTime);
Console.WriteLine ("Time to live: {0}", reply.Options.Ttl);
Console.WriteLine ("Don't fragment: {0}", reply.Options.DontFragment);
Console.WriteLine ("Buffer size: {0}", reply.Buffer.Length);
}
}
Si ejecuto este codigo con Windows XP no hay problema de ningún tipo, es decir, si detecta un equipo, el "reply" lo detecta y si no detecta ningun equipo te devuelve uno de sus estados(hardware no encontrado...etc), el problema es con Windows 7, al realizar el ping, si existe un equipo el "reply" devuelve un estado "succes", en cambio, si no detecta ningún equipo me lanza una Ping exception y me detiene la ejecución.
¿Alguien sabe como solucionarlo?, lo que quiero es que al realizar un ping aunque no detecte un equipo me devuelva un status(el que sea) pero que no me lance una excepcion.
Un resumen:
| Equipo IP conectado | Equipo IP NO conectado
Windows XP | Succes | (DestinationNetworkUnreachable, DestinationHostUnreachable...etc)
Windows 7 | Succes | Exception
Lo que me gustaría es que en Windows 7 al no detectar un equipo IP me devolviera un estado (DestinationNetworkUnreachable, DestinationHostUnreachable...etc) y no una exception.
Muchas gracias y un saludo.