22 Stimmen

Überprüfung des Netzwerkstatus in C#

Wie prüfe ich, dass ich eine offene Netzwerkverbindung habe und eine bestimmte IP-Adresse in c# kontaktieren kann? Ich habe Beispiele in VB.Net gesehen, aber sie verwenden alle die Struktur "My". Ich danke Ihnen.

43voto

Yona Punkte 9110

Wenn Sie nur prüfen wollen, ob das Netz verfügbar ist, verwenden Sie diese Option:

bool networkUp
    = System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();

Um den Status einer bestimmten Schnittstelle (oder andere Informationen) zu überprüfen, verwenden Sie:

NetworkInterface[] networkCards
    = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces();

Um den Status eines entfernten Computers zu überprüfen, müssen Sie eine Verbindung zu diesem Computer herstellen (siehe andere Antworten)

17voto

CCrawford Punkte 261

Wenn Sie Änderungen des Status überwachen möchten, verwenden Sie die Funktion System.Net.NetworkInformation.NetworkChange.NetworkAvailabilityChanged Veranstaltung:

NetworkChange.NetworkAvailabilityChanged 
    += new NetworkAvailabilityChangedEventHandler(NetworkChange_NetworkAvailabilityChanged);
_isNetworkOnline = NetworkInterface.GetIsNetworkAvailable();

// ...
void NetworkChange_NetworkAvailabilityChanged(object sender, NetworkAvailabilityEventArgs e)
{
    _isNetworkOnline  = e.IsAvailable;
}

7voto

Patrick Desjardins Punkte 130529

Erster Vorschlag (IP-Verbindung)

Sie können versuchen, eine Verbindung mit der IP-Adresse herzustellen, indem Sie etwas wie folgt verwenden:

IPEndPoint ipep = new IPEndPoint(Ipaddress.Parse("IP TO CHECK"), YOUR_PORT_INTEGER);
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
server.Connect(ipep);

Ich empfehle Ihnen, den Code eines "Chat"-Programms zu überprüfen. Diese Programme manipulieren viele IP-Verbindungen und geben Ihnen eine gute Vorstellung davon, wie Sie prüfen können, ob eine IP verfügbar ist.

Zweiter Vorschlag (Ping)

Sie können versuchen, einen Ping zu senden. Hier ist eine gute Lehrgang . Sie brauchen nur zu tun:

Ping netMon = new Ping();
PingResponse response = netMon.PingHost(hostname, 4);
if (response != null)
{
    ProcessResponse(response);
}

4voto

tamberg Punkte 1987

Wenn Sie sich für den HTTP-Statuscode interessieren, funktioniert das Folgende gut:

using System;
using System.Net;

class Program {

    static void Main () {
        HttpWebRequest req = WebRequest.Create(
            "http://www.oberon.ch/") as HttpWebRequest;
        HttpWebResponse rsp;
        try {
            rsp = req.GetResponse() as HttpWebResponse;
        } catch (WebException e) {
            if (e.Response is HttpWebResponse) {
                rsp = e.Response as HttpWebResponse;
            } else {
                rsp = null;
            }
        }
        if (rsp != null) {
            Console.WriteLine(rsp.StatusCode);
        }
    }

}

4voto

Amit Kumawat Punkte 582

Sie können den Netzwerkstatus mit

if(System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable())
{
  //Do your stuffs when network available

}
else
{
 //Do stuffs when network not available

}

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