Alle IP-Adressen eines Netzwerks ermitteln



  • Fazit: Ich hatte unrecht und *jeder* Rechner in einem Segment muss auf einen ARP-Request antworten, sonst kann er gleich das Netzwerkkabel draussen lassen (ausser er will nur mithören 😉 )



  • Jochen Kalmbach schrieb:

    ausser er will nur mithören 😉

    ..oder er macht nur broadcasts 😃
    aber ich glaub' jetzt haben wir den op ganz verwirrt 😉



  • also ich habe mal mit der Funktion SendARP getestet. Wenn ich gezielt eine bekannte IP-Adresse in meinem Netz übergebe funktioniert es, aber sobald ich eine Schleife programmiere indem ich das letzte Byte der IP-Adresse hochzähle bekomme ich auch bei den vorhandenen Adressen eine Fehlermeldung.
    Warum?

    Wie kann ich eigentlich einen Ping absetzen. Eine Funktion SendPing gibt es ja nicht.



  • Uli schrieb:

    also ich habe mal mit der Funktion SendARP getestet. Wenn ich gezielt eine bekannte IP-Adresse in meinem Netz übergebe funktioniert es, aber sobald ich eine Schleife programmiere indem ich das letzte Byte der IP-Adresse hochzähle bekomme ich auch bei den vorhandenen Adressen eine Fehlermeldung.
    Warum?

    was für 'ne fehlermeldung? vielleicht schickst du die ARP's zu schnell hintereinander ab?

    Uli schrieb:

    Wie kann ich eigentlich einen Ping absetzen. Eine Funktion SendPing gibt es ja nicht.

    guckst du: http://www.sockets.com/ms_icmp.htm#Introduction



  • Bzgl. SendARP: Du musst vermutlich einen bestimmten Timeout abwarten... hab es aber noch nie probiert..

    Bzg. Ping: IcmpSendEcho(2)



  • das mit dem Timeout könnte sein. Ich hab das bis jetzt nur ohne Verzögerung probiert. Ist der Timeout eine feste Konstante, kann man die Zeit irgendwie Abfragen oder muß man sie empirisch ermitteln.



  • Hallo,

    ich hab's mal mit IcmpSendEcho probiert, wo man auch einen Timeout angeben kann. Es hat soweit funktioniert, allerdings dauert es natürlich bis er alle Adresse abgeklappert hat.



  • probier doch mal SendARP() gefolgt von 'nem Sleep(300) oder so. vielleicht ist das schneller. ich weiss aber nicht ob 'SendARP()' es nochmal versucht wenn keine antwort kam...



  • das hatte ich vorher schon versucht. SendARP funktioniert nicht mehr, wenn keine Antwort kam.



  • ich habe noch etwas festgestellt:

    Ursprünglich wollte ich nach dem scannen, wenn möglich noch die Hostnamen ermitteln. Die dazu notwendige Socket-Funktion gethostbyaddr benötigt vorher noch den WSAStartup Aufruf. Wenn ich den aber benutze funktioniert IcmpSendEcho nicht mehr.


Anmelden zum Antworten