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.
Antworten
Zu viele Anzeigen?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)
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;
}
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);
}
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);
}
}
}
- See previous answers
- Weitere Antworten anzeigen