Wie IP_ADAPTER_GATEWAY_ADDRESS nutzen
-
Hallo zusammen,
ich bin recht neu in C++, habe aber durchaus einige Erfahrung in anderen Programmiersprachen.
Als kleine Aufgabe zum Einstieg in die Sprache habe ich mir überlegt ein kleines Tool zu programmieren, welches die Gatewayadresse der NIC ermittelt und anpingt.
Leider weiß ich weder wie ich die Sache angehen soll, noch ob ich überhaupt richtig in der "WinAPI" Sektion bin. Ersteinmal mein Code:#include <string> #include <cstring> #include <stdlib.h> using namespace std; string getGatewayAddress(); int main(){ const char * chrGatewayAddress = getGatewayAddress().c_str(); //diese Umwandlung scheint auch nicht richtig zu funktionieren system("color 02"); //Matrix-Fan :) system("cls"); system(("ping " + chrGatewayAddress + " -t")); //system("ping 10.0.0.1 -t"); //so sollte es aussehen wenn es fertig ist return 0; } string getGatewayAddress(){ //was zur Hölle muss hier rein? return "10.0.0.1"; }
Ich bin durch google auf diese Seite gestoßen. Ist das eine Windows-Api, oder ist das die Struktur eines Objektes welche ich verwenden muss wenn ich <winsock2.h> include?
Ich bin sehr verwirrt und würde mich über ein Lösung mit ausführlicher Erklärung freuen
-
Steht doch in der von dir verlinkten Doku: Die Struktur wird von
GetAdaptersAddresses
befüllt.
Wie manGetAdaptersAddresses
richtig aufruft ist nun nicht ganz einfach, aber dafür gibt es dazu ja auch ein schönes Beispiel auf der Seite zuGetAdaptersAddresses
.Das Beispiel musst du natürlich etwas anpassen und erweitern. z.B. wirst du das Flag
GAA_FLAG_INCLUDE_GATEWAYS
mitgeben müssen.
Im Ergebnis sollte dann - zumindest für manche Adapter - der EintragPIP_ADAPTER_GATEWAY_ADDRESS_LH FirstGatewayAddress;
!= NULL
sein.
Und überall wo der nichtNULL
ist zeigt er auf eineIP_ADAPTER_GATEWAY_ADDRESS
Struktur wo das erste Gateway von dem jeweiligen Adapter drinnen steht. Wenn derNext
Zeiger dieser Struktur ebenfalls != NULL ist, dann zeigt er auf eine weitereIP_ADAPTER_GATEWAY_ADDRESS
Struktur usw. bisNext == NULL
.Du gehst also die Einträge für alle Adapter durch, und für jeden Adapter nochmal die Einträge für alle Gateways. Dann hast du eine Liste aller Gateways. Dann kannst du dir aussuchen welches davon du anpingen willst
(Ich weiss ehrlich gesagt nicht wie gross die Chancen sind auf nem normalen PC mehrere Gateways zu haben. Ich hätte gesagt sehr gering... bloss ich weiss nicht wie das aussieht wenn man z.B. nen VPN Tunnel offen hat. Wie z.B. wenn man ein ADSL Modem ohne Router verwendet.)