[C, Winapi] Ping (via ICMP.DLL) über bestimmte IP versenden

#1478088
Lesenswert?

Hallo.
Ich habe mir ein Ping-Programm programmiert das über ICMP.DLL arbeitet, 
also mit dem Aufruf IcmpSendEcho. Nun wollte ich diesen Ping aber über 
eine bestimmte Netzwerkkarte versenden (es befinden sich 4 Stück im PC). 
Wenn man mit RAW-Sockets arbeitet kann man das ja über bind machen, aber 
über ICMP.dll habe ich jetzt noch nichts gefunden. Hat da jemand was 
parat, oder ist das damit einfach nicht möglich?
Persönliche Seite #1478097
Lesenswert?

Das dürfte von den IP-Adressen und Subnets abhängen, die für die 
Netzwerkkarten konfiguriert sind. Liegt die Ping-Zieladresse im Subnet 
einer der Netzwerkkarten, wird diese verwendet.
Interessanter bzw. wirrer wird die Angelegenheit, wenn für die 
Netzwerkkarten auch noch Router/Standardgateways konfiguriert sind.

Wenn allerdings alle vier Karten Adressen aus dem selben Subnet 
verwenden, dann wüsste ich auch nicht ad hoc, wie man da eine gezielt 
auswählen kann.

Wie sehen denn die Adressen aus?
#1478164
Lesenswert?

Sie sind alle in einem anderen Subnetz.
LAN1: 192.168.0.1
LAN2: 192.168.1.1
LAN3: 192.168.2.1
LAN4: 192.168.3.1
Soweit ist es auch nicht problematisch. Doch was ich machen will ist, 
dass LAN1 LAN3 und LAN2 LAN4 anpingen soll. Der Rechner ist also mit je 
zwei Netzwerkkarten immer zusammen geschaltet. Hintergrund ist, dass mit 
nur einem Rechner die Kabel auf Unterbrechungen getestet werden sollen.
#1478422
Lesenswert?

Ja, stimmt, aber ich kann sie ja anpingen da die Netzmaske 255.255.0.0 
ist.
Das Problem ist halt, dass wenn die Karten alle 192.168.0.1-4 hätten, 
dann läuft das alles über den Kernel und nicht mehr physikalisch über 
die LWL/Kupfer Leitungen.
Wenn du ne andere Idee hast wie man das lösen könnte immer her damit.
#1478428
Lesenswert?

Timmo H. schrieb:
> Hintergrund ist, dass mit
> nur einem Rechner die Kabel auf Unterbrechungen getestet werden sollen.

für sowas gibts ja nu wirklich einfachere Lösungen.
Die teure ist mit sicherheit ein Netzwerk-Analyse-Werkzeug.

Wenns nur um Unterbrechung geht, bau halt zwei Rj45 Buchsen auf eine 
kleine Paltine und löt an die eine Seite den MinusPol und auf die andere 
Seite 8 LEDs+Widerstände dann an Pluspol.

Hardwarekosten 2-5€
Zeit für Aufbau höchstens 1-2h (je nach Löterfahrung)
#1478471
Lesenswert?

Vlad Tepesch schrieb:
> für sowas gibts ja nu wirklich einfachere Lösungen.
> Die teure ist mit sicherheit ein Netzwerk-Analyse-Werkzeug.
>
> Wenns nur um Unterbrechung geht, bau halt zwei Rj45 Buchsen auf eine
> kleine Paltine und löt an die eine Seite den MinusPol und auf die andere
> Seite 8 LEDs+Widerstände dann an Pluspol.
>
> Hardwarekosten 2-5€
> Zeit für Aufbau höchstens 1-2h (je nach Löterfahrung)
Das soll aber in einem bestehenden Netz mit eigener Testsoftware 
integriert werden.

>warum muss es denn ICMP sein, mach das ganze noch als UDP. Dann kannst
>du auch die absender IP festelgen (bin mir aber nicht sicher ob das
>gleichbedeutetd mit dem Interface ist)
ICMP war erstmal am einfachsten zu programmieren. Wenn du eine einfache 
Lösung per UDP past, immer her damit.
Gast #1478496
Lesenswert?

> ICMP war erstmal am einfachsten zu programmieren. Wenn du eine einfache
> Lösung per UDP past, immer her damit.
wo ist jetzt das Problem mit UDP, da sind in jeden Doku beispiele drin. 
Finde ich wesentlich einfacher als mit ICMP - bis jetzt kannte ich nicht 
mal die API um ein Ping zu erzeugen.
#1478514
Lesenswert?

Ja, wie gesagt ICMP ist verdammt einfach. Eigentlich nur ein Befehl, 
kein Rumgefrickel mit Sockets usw. nur eben die Problematik dass man 
nicht sagen kann über welches Interface das ganze rausgehen soll. Ich 
werde nochmal gucken ob ich da auf die schnelle was mit UDP programmiert 
bekomme.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren