示例#1
0
        /// <summary>
        /// Méthode qui va ping la machine.
        /// </summary>
        /// <param name="machine"></param>
        /// <returns></returns>
        private async Task PingMachine(MachineToTestDisplay machine)
        {
            var oldValue = machine.StatusMachine;

            machine.StatusMachine = Status.InTesting;

            ReponsePing resultPing = await Reseau.PingHostAsync(machine.NomMachine);

            if (resultPing.IsPingable)
            {
                machine.StatusMachine = Status.Connected;

                if (oldValue == Status.NotConnected)
                {
                    Notify.ShowNotification("PING", machine.NomMachine + " en ligne", System.Windows.Forms.ToolTipIcon.Info);
                }

                // Résoudre le DNS.
                var adresses = await Reseau.DnsTestAsync(machine.NomMachine);

                int nbreIp = adresses.Count();

                switch (nbreIp)
                {
                // Si 0, pas de DNS configuré.
                case 0:
                    machine.IpAdresse = "Aucun adresse IP trouvé";
                    machine.DnsStatus = StatusDns.NoDns;
                    break;

                case 1:
                    machine.IpAdresse = adresses.First();
                    machine.DnsStatus = StatusDns.GoodDns;
                    break;

                // DNS qui contient plusieurs IP pour la même adresse.
                default:
                    machine.IpAdresse = string.Join(" - ", adresses);
                    machine.DnsStatus = StatusDns.ErrorDns;
                    break;
                }
            }
            else
            {
                if (oldValue == Status.Connected)
                {
                    Notify.ShowNotification("PING", machine.NomMachine + " déconnecté", System.Windows.Forms.ToolTipIcon.Error);
                }

                machine.StatusMachine = Status.NotConnected;
            }

            machine.Temps = resultPing.TimePing;
        }