Example #1
0
        public ResultadoPing Executar()
        {
            this.Executado = true;
            IPEndPoint ep = null;
            var resultado = new ResultadoPing();
            var udpClient = new UdpClient(IPDestino, PortaDestino);
            var bytesEnviados = Encoding.ASCII.GetBytes("PING");
            Log(string.Format("Enviando PING para [{0}] através da porta [{1}]:", IPDestino, PortaDestino));

            for (int i = 0; i < numeroPacotes; i++)
            {
                var pacotePing = new PacotePing();
                pacotePing.Bytes = 4;
                pacotePing.Estado = EstadoPacotePing.Enviado;
                try
                {
                    var dataInicio = DateTime.Now;
                    udpClient.Send(bytesEnviados, bytesEnviados.Length);
                    udpClient.Client.ReceiveTimeout = 1000;
                    var bytesRecebidos = udpClient.Receive(ref ep);
                    var dataFim = DateTime.Now;
                    var retorno = Encoding.ASCII.GetString(bytesRecebidos);

                    if (retorno == "PING")
                    {
                        pacotePing.Estado = pacotePing.Estado | EstadoPacotePing.Recebido;
                        pacotePing.Tempo = dataFim - dataInicio;

                        Log(string.Format("Resposta: bytes={0} tempo={1}ms.", pacotePing.Bytes, (int)pacotePing.Tempo.TotalMilliseconds));
                    }
                }
                catch (SocketException)
                {
                    pacotePing.Estado = pacotePing.Estado | EstadoPacotePing.Perdido;
                    Log("Esgotado o tempo limite do pedido.");
                }

                resultado.AdicionarPacotePing(pacotePing);
            }

            return resultado;
        }
Example #2
0
 public void QuandoEuClicarEmExecutarPing()
 {
     resultado = ping.Executar();
 }