Wie pinge ich schneller, wenn ich eine unerreichbare IP erreiche?

8

Ich habe eine App, die IP oder IP-Bereich pingt. Das Problem ist, dass beim Schließen von Hosts das Pingen länger dauert als das Öffnen. Wenn der Host geschlossen ist, beträgt die Zeit für das Pingen ungefähr 1-2 Sekunden.

Wie könnte ich es schneller machen, wenn Hosts geschlossen sind?

Das ist mein Code:

%Vor%

Das habe ich jetzt:

%Vor%     
HelpNeeder 19.01.2012, 10:05
quelle

5 Antworten

10

Sie sollten das Timeout nicht reduzieren. Versuchen Sie, mehrere Pings gleichzeitig asynchron zu senden.

%Vor%     
Marc Messing 19.01.2012, 10:27
quelle
6

Ihre Adresse ist string . Also wird es zuerst über DNS gehen, um zu sehen, ob das möglicherweise ein Hostname ist (selbst wenn es eine IP-Adresse ist).

Ich schlage vor, dass Sie die Überladung stattdessen mit IPAddress verwenden.

    
leppie 19.01.2012 10:23
quelle
4

Ich habe vor nicht allzu langer Zeit einen Live-Host-Scanner erstellt. Es verwendet ARP, um zu überprüfen, ob ein Computer online ist. Eine ARP-Anfrage ist viel schneller als wenn Sie einen Host anpingen würden. Hier ist der Code, mit dem ich überprüft habe, ob ein Host verfügbar ist:

%Vor%

Wenn Sie daran interessiert sind Nmap verwendet diese Technik auch , um nach verfügbaren Hosts zu suchen.

>
  

ARP-Scan setzt Nmap und seine optimierten Algorithmen für ARP-Anfragen ein. Und wenn es eine Antwort zurückbekommt, muss sich Nmap nicht einmal um die IP-basierten Ping-Pakete kümmern, da es bereits weiß, dass der Host aktiv ist. Dies macht ARP-Scan viel schneller und zuverlässiger als IP-basierte Scans. Dies geschieht standardmäßig beim Scannen von Ethernet-Hosts, die von Nmap erkannt werden, in einem lokalen Ethernet-Netzwerk. Selbst wenn verschiedene Ping-Typen (wie -PE oder -PS) angegeben werden, verwendet Nmap stattdessen ARP für jedes der Ziele, die sich im selben LAN befinden.

BEARBEITEN:

Dies funktioniert nur im aktuellen Subnetz! Solange es keinen Router zwischen dem anfordernden Rechner und dem Ziel gibt, sollte es funktionieren.

  

ARP ist ein nicht routingfähiges Protokoll und kann daher nur zwischen Systemen im selben Ethernet-Netzwerk verwendet werden. [...]   arp-scan kann verwendet werden, um IP-Hosts im lokalen Netzwerk zu erkennen. Es kann alle Hosts erkennen, einschließlich derjenigen, die den gesamten IP-Verkehr blockieren, wie z. B. Firewalls und Systeme mit Ingress-Filtern. - Auszug aus dem NTA-Monitor Wiki

Weitere Informationen zur SendARP-Funktion finden Sie in der Dokumentation pinvoke.net .

>     
SanBen 19.01.2012 10:36
quelle
3

Sie müssen Ihre Anwendung neu entwerfen, um Multithreading zu verwenden - & gt; Aufgaben. Geben Sie für jeden Ping eine Aufgabe aus, und wenn Sie eine Antwort von einem bestimmten Host erhalten, lösen Sie ein Ereignis aus und aktualisieren Sie die Benutzeroberfläche. Das Ändern des Socket-Timeouts hilft Ihnen nur dabei, das Timeout von unerhört zu unerträglich zu reduzieren.

    
OSH 19.01.2012 10:17
quelle
2

Nicht sicher, ob dies eine Hilfe ist (siehe letzten Beitrag im Thread), es scheint ein fast identisches Problem. Was Sie dagegen stoßen, ist die Zeitüberschreitung des Protokollstapels. Sie können umgehen, wenn Sie Socket zum Verbinden verwenden, da Sie mehr Kontrolle haben.

    
Twirrim 19.01.2012 10:11
quelle

Tags und Links