Forum: PC-Programmierung [C, Winapi] Ping (via ICMP.DLL) über bestimmte IP versenden


von Timmo H. (masterfx)


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?

von Rufus Τ. F. (rufus) Benutzerseite


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?

von Timmo H. (masterfx)


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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

>  Doch was ich machen will ist, dass LAN1 LAN3 und LAN2 LAN4 anpingen soll.

Wie soll das gehen, wo doch jeweils andere Subnetze verwendet werden?

von JojoS (Gast)


Lesenswert?

das geht vielleicht besser mit WinPCap, damit kann man beliebige Pakete 
auf ausgewählten Interfaces senden/empfangen.

von Timmo H. (masterfx)


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.

von Klaus W. (mfgkw)


Lesenswert?

Die Routen entsprechend manipulieren und dann senden?

von Vlad T. (vlad_tepesch)


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)

von Peter (Gast)


Lesenswert?

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)

von Timmo H. (masterfx)


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.

von Peter (Gast)


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.

von Timmo H. (masterfx)


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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Ja, stimmt, aber ich kann sie ja anpingen da die Netzmaske 255.255.0.0
> ist.

Dann sind alle vier Netzwerkkarten im selben Subnet.

von Timmo H. (masterfx)


Lesenswert?

Ja, dann. Wie gesagt ich bin eben noch auf der Suche nach einer Lösung.

von Klaus W. (mfgkw)


Lesenswert?

und warum geht es nicht mit Setzen der Routen?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.