18 Stimmen

C# Remote Server prüfen

Kann jemand beraten, was der beste Weg zu überprüfen (mit .NET 3.5), wenn ein Remote-Server verfügbar ist?

Ich dachte an die Verwendung des folgenden Codes, würde aber gerne wissen, ob es eine bessere Möglichkeit gibt, wenn die Gemeinschaft eine andere Option hat.

TcpClient client = new TcpClient("MyServer", 80);
if (!client.Connected)
{
    throw new Exception("Unable to connect to MyServer on Port 80");
}
client.Close();

26voto

Dan F Punkte 11764

Sie könnten ping es

Sie könnten die Standardseite herunterladen davon

Sie könnten eine KOPF Anfrage

Wenn es sich um einen lokalen IIS6-Server in Ihrem Netzwerk handelt und Sie über einige Verwaltungsdaten verfügen, können Sie Verbindung zum IIS unter Verwendung eines DirectoryEntry-Codes

Einige der Antworten auf 136615 könnte ebenfalls hilfreich sein, insbesondere die akzeptierte Antwort, in der es um Steckdosen

Für die Druckserver (oder genauer gesagt, die Drucker) ist der Code von K Scott aquí könnte helfen. Es macht jedenfalls Spaß, mit diesem Code zu spielen :-) In diesem Code wird dns.resolve erwähnt, das veraltet ist und ersetzt wurde durch Dns.GetHostEntry

Mir gehen so langsam die Ideen aus :-)

8voto

Noldorin Punkte 138548

Wenn Sie nur sehen wollen, ob ein bestimmter Server online ist, sollte ein einfacher Ping in den meisten Fällen genügen.

PingReply pingReply;
using (var ping = new Ping())
    pingReply = ping.Send("http://www.stackoverflow.com/");
var available = pingReply.Status == IPStatus.Success;

Mit dieser Methode missbrauchen Sie den HTTP-Server auch nicht in irgendeiner Weise.

Ansonsten (wenn Sie prüfen wollen, ob eine Verbindung auf einem bestimmten Port möglich ist), sieht das im Grunde gut aus.

4voto

LucasS Punkte 461

Nur um Dans Antwort zu ergänzen... Ich hatte gerade, dies zu implementieren, und hier ist ein nettes kleines Code-Snippet, das denen helfen sollte, die es von Google hierher schaffen.

Imports System.Net
Private Function URLExists(pURL As String) As Boolean

    Try
        'Creating the HttpWebRequest
        Dim request As HttpWebRequest = TryCast(WebRequest.Create(pURL), HttpWebRequest)
        'Setting the Request method HEAD, you can also use GET too.
        request.Method = "HEAD"
        'Getting the Web Response.
        Dim response As HttpWebResponse = TryCast(request.GetResponse(), HttpWebResponse)
        'Returns TURE if the Status code == 200
        Return (response.StatusCode = HttpStatusCode.OK)
    Catch
        'Any exception will returns false.
        Return False
    End Try
End Function

Tut mir leid, dass es VB ist, aber das war es, was ich vor mir hatte. Ich überlasse es dem Leser als Übung, dies nach Bedarf in C# zu konvertieren.

1voto

Kev Punkte 115293

Ich nehme an, dass Sie prüfen wollen, ob eine Website verfügbar ist. Sie könnten einfach eine System.Net.WebRequest und überprüfen Sie das Ergebnis.

Aktualisierung: Wenn Sie einige Server (und Dienste) zu überwachen haben, dann wäre es vielleicht besser, ein Paket wie Nagios , HostMonitor o IPSentry statt selbst zu rollen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X