C # Kontroller, om en Windows-server er online

Indlæg af Hanne Mølgaard Plasc

Problem




   Mulig duplikat:

  Kontroller, om en server er tilgængelig





Jeg skriver et program i C #, der spørger Windows-serverne på vores domæne, den ene efter den anden. I øjeblikket vil programmet hænge og vente på et svar, hvis en server er offline eller har en fejl, hvad er den bedste måde at vente på og hvis nej svar er modtaget, gå videre til næste server? Jeg har aldrig behøvet at gøre dette før, så enhver hjælp er meget værdsat.


Tak
Steve

Bedste reference


Det lyder som om du vil kigge på BackgroundWorker og threading (the Thread class). Jeg forestiller mig, at du blokerer UI-tråden ved at gøre det, som det kan være at tjekke på dine servere. [3]


Ved at bruge threading kan du rapportere tilbage til brugeren, præcis hvad der foregår og anvende dine egne timeouts, hvis det er nødvendigt.

Andre referencer 1


Du kan pinge dine servere ved hjælp af PingReplay Class i C #:


using System;
using System.Net;
using System.Net.NetworkInformation;
using System.Text;

namespace PingTest
{
    public class PingExample
    {
        // args[0] can be an IPaddress or host name.
        public static void Main (string[] args)
        {
            Ping pingSender = new Ping();
            PingOptions options = new PingOptions();

            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);
            }
        }
    }
}


Koden er blevet vedtaget fra MSDN, se her. [4]