O uso de ping em C # é obtido usando o método Ping.Send(System.Net.IPAddress)
, que executa uma solicitação de ping para o endereço IP ou URL fornecido (válido) e obtém uma resposta chamada de Pacote de protocolo de mensagem de controle da Internet (ICMP) . O pacote contém um cabeçalho de 20 bytes que contém os dados de resposta do servidor que recebeu a solicitação de ping. O System.Net.NetworkInformation
namespace da estrutura .Net contém uma classe chamada PingReply
que tem propriedades projetadas para traduzir a ICMP
resposta e fornecer informações úteis sobre o servidor com ping, como:
- IPStatus : obtém o endereço do host que envia a resposta de eco do Internet Control Message Protocol (ICMP).
- IPAddress : obtém o número de milissegundos necessários para enviar uma solicitação de eco ICMP (Internet Control Message Protocol) e receber a mensagem de resposta de eco ICMP correspondente.
- RoundtripTime (System.Int64) : obtém as opções usadas para transmitir a resposta a uma solicitação de eco do Internet Control Message Protocol (ICMP).
- PingOptions (System.Byte []) : Obtém o buffer de dados recebidos em uma mensagem de resposta de eco do Internet Control Message Protocol (ICMP).
A seguir está um exemplo simples usado WinForms
para demonstrar como o ping funciona em c #. Ao fornecer um endereço IP válido textBox1
e clicar button1
, estamos criando uma instância da Ping
classe, uma variável local PingReply
e uma string para armazenar o endereço IP ou URL. Atribuímos PingReply
ao Send
método ping e , em seguida, inspecionamos se a solicitação foi bem-sucedida, comparando o status da resposta ao IPAddress.Success
status da propriedade . Por fim, extraímos PingReply
as informações que precisamos exibir para o usuário, que são descritas acima.
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!!");
}
}
}
}