una net make hacer desde asp c# ping

net - make a ping c#



Usando ping en c# (3)

El uso de ping en C # se logra usando el método Ping.Send(System.Net.IPAddress) , que ejecuta una solicitud de ping a la dirección IP o URL válida proporcionada, y obtiene una respuesta a cambio que se llama Protocolo de mensajes de control de Internet (ICMP). ) El paquete que contiene un encabezado de 20 bytes que contiene los datos de respuesta del servidor ping que recibió la solicitud de ping, el espacio de nombres de .Net Framework System.Net.NetworkInformation contiene una clase llamada PingReply Class que tiene propiedades diseñadas para traducir la respuesta ICMP y Entregar información útil sobre la red del servidor ping como:

  • IPStatus : Obtiene la dirección del host que envía la respuesta de eco del Protocolo de mensajes de control de Internet (ICMP).
  • Dirección IP : Obtiene el número de milisegundos tomados para enviar una solicitud de eco del Protocolo de mensajes de control de Internet (ICMP) y recibir el mensaje de respuesta de eco de ICMP correspondiente.
  • RoundtripTime (System.Int64) : Obtiene las opciones utilizadas para transmitir la respuesta a una solicitud de eco del Protocolo de mensajes de control de Internet (ICMP).
  • PingOptions (System.Byte []) : Obtiene el búfer de los datos recibidos en un mensaje de respuesta de eco del Protocolo de mensajes de control de Internet (ICMP).

El siguiente es un ejemplo simple que usa WinForms para demostrar cómo funciona el ping en c #, al proporcionar una dirección IP válida en textBox1 y al hacer clic en el botón button1 , estamos creando una instancia de la Ping class , una variable local de PingReply , una cadena de variable local para almacenar la IP o la dirección URL, luego asignamos la variable local PingReply que creamos al método ping Send, luego inspeccionamos si la solicitud fue exitosa comparando el estado de la respuesta con la propiedad IPAddress.Success status, a continuación extraemos de PingReply la variable local la información que necesitamos mostrar al usuario, que se describe anteriormente:

using System; using System.Net.NetworkInformation; using System.Windows.Forms; namespace PingTest1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Ping p = new Ping(); PingReply r; string s; s = textBox1.Text; r = p.Send(s); if (r.Status == IPStatus.Success) { lblResult.Text = "Ping to " + s.ToString() + "[" + r.Address.ToString() + "]" + " Successful" + " Response delay = " + r.RoundtripTime.ToString() + " ms" + "/n"; } } private void textBox1_Validated(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(textBox1.Text) || textBox1.Text == "") { MessageBox.Show("Please use valid IP or web address!!"); } } } }

Cuando hago ping a un sistema remoto con Windows, dice que no hay respuesta, pero cuando hago ping con c #, dice éxito. Windows es correcto, el dispositivo no está conectado. ¿Por qué mi código puede hacer ping con éxito cuando Windows no lo es?

Aquí está mi código:

Ping p1 = new Ping(); PingReply PR = p1.Send("192.168.2.18"); // check when the ping is not success while (!PR.Status.ToString().Equals("Success")) { Console.WriteLine(PR.Status.ToString()); PR = p1.Send("192.168.2.18"); } // check after the ping is n success while (PR.Status.ToString().Equals("Success")) { Console.WriteLine(PR.Status.ToString()); PR = p1.Send("192.168.2.18"); }


private void button26_Click(object sender, EventArgs e) { System.Diagnostics.ProcessStartInfo proc = new System.Diagnostics.ProcessStartInfo(); proc.FileName = @"C:/windows/system32/cmd.exe"; proc.Arguments = "/c ping -t " + tx1.Text + " "; System.Diagnostics.Process.Start(proc); tx1.Focus(); } private void button27_Click(object sender, EventArgs e) { System.Diagnostics.ProcessStartInfo proc = new System.Diagnostics.ProcessStartInfo(); proc.FileName = @"C:/windows/system32/cmd.exe"; proc.Arguments = "/c ping " + tx2.Text + " "; System.Diagnostics.Process.Start(proc); tx2.Focus(); }


using System.Net.NetworkInformation; public static bool PingHost(string nameOrAddress) { bool pingable = false; Ping pinger = null; try { pinger = new Ping(); PingReply reply = pinger.Send(nameOrAddress); pingable = reply.Status == IPStatus.Success; } catch (PingException) { // Discard PingExceptions and return false; } finally { if (pinger != null) { pinger.Dispose(); } } return pingable; }