Internet IP rausbekommen
-
Hallo,
ich möchte gern ein Programm schreiben, welches mir meine Internet IP ausgibt.
Ich besitze einen Router!Danke für eure Hilfe
-
-
und wie kann mann das auswerte mit c++?
-
Du machst ein connect() zu obiger url und gehst die Antwort ( Website ) durch bis Du die IP hast.
Wie Webseiten geladen werden dürftest Du in der FAQ finden oder auf c-worker.ch
Grüße
RB
-
Vieleicht hilft Dir die Funktion "GetIpStatistics()".
Schlage bitte in der MSDN-Library-Hilfe nach.
-
Hat keiner ein Beipiel?
-
Wenn Du ein Router hast, ist das leider nicht ganz einfach... wie "RED-BARON" gesagt hast, könntest Du irgendeinen Server anfragen, der Dir Deine IP-Adresse mitteilt... (z.B. via CInternetSession::OpenURL bzw. InternetOpenUrl)
Wenn Dein Reouter UPnP unterstützt kannst Du den auch direkt fragen (kann Dir jetzt aber kein Beispiel zeigen
)...
-
Es gibt hier irgendwo in der Forensuche ein Beispiel dazu.
Dort wird von oben beschriebenem URL die IP ausgelesen.Und der Website ist es absolut wurst ob du einen Router
dran hast...
-
Ist bestimmt verbesserungsfähig da ich c Anfänger bin, hatte allerdings vor einiger Zeit genau den selben Wunsch wie du.
Hier ist mein Code ( funktioniert soweit )
static void GetMyIP(){ int sock; struct sockaddr_in host_addr; struct hostent *hostinfo; char *host; char command[1024]; char buf[1024]; int bytes_sent, bytes_recv; FILE * T_Out; // Socket initialisierung sock = socket (AF_INET, SOCK_STREAM, 0); if (sock == -1) { sprintf(T_IPG, "socket()"); return; } host = "63.209.100.216"; // www.whatismyip.com /* Adresse des Servers festlegen */ memset( &host_addr, 0, sizeof (host_addr)); host_addr.sin_family = AF_INET; host_addr.sin_port = htons (80); host_addr.sin_addr.s_addr = inet_addr ("63.209.100.216"); if (host_addr.sin_addr.s_addr == INADDR_NONE) { // Server wurde nicht mit IP sondern mit dem Namen angegeben hostinfo = gethostbyname (host); if (hostinfo == NULL) { sprintf(T_IPG, "gethostbyname ()"); return; } memcpy((char*) &host_addr.sin_addr.s_addr, hostinfo->h_addr, hostinfo->h_length); } /* Verbindung aufbauen */ if (connect(sock, (struct sockaddr *) &host_addr, sizeof(struct sockaddr)) == -1) { sprintf(T_IPG, "connect()"); return; } /* HTTP-GET-Befehl */ sprintf (command, "GET / HTTP/1.0\nHost:www.whatismyip.com\n\n"); /* Befehl senden */ bytes_sent = send (sock, command, strlen (command), 0); if (bytes_sent == -1) { sprintf(T_IPG, "send()"); return; } /* Antwort des Servers empfangen und in Datei ausgeben */ T_Out = fopen("OUT.TXT","w"); while ((bytes_recv = recv (sock, buf, sizeof(buf), 0)) > 0) { fputs(buf, T_Out); } if (bytes_recv == -1) { fclose(T_Out); sprintf(T_IPG, "recv()"); return; } fclose(T_Out); // Datei wird nach Schluesselwort "IP Is" durchsucht T_Out = fopen("OUT.TXT","r"); if(T_Out != NULL){ char T_search[100]; int T_zaehl=0; int T_hit; T_hit = 0; while(!feof(T_Out)){ if( fgets(T_search, 100, T_Out) != 0){ for(T_zaehl=0; T_zaehl<strlen(T_search); T_zaehl++){ switch (T_search[T_zaehl]){ case 73: if(T_hit == 0){ T_hit++; } if(T_hit == 3){ T_hit++; } break; case 80: if(T_hit == 1){ T_hit++; } break; case 32: if(T_hit == 2){ T_hit++; } break; case 115: if(T_hit == 4){ T_hit++; } break; default: if(T_hit != 5){ T_hit = 0; } } if(T_hit == 5){ T_zaehl = T_zaehl+2; break; } } } if(T_hit == 5){ break; } } if(T_hit == 5){ int T_zaehlIP; T_zaehlIP = 0; while(T_search[T_zaehl] != 32){ // IP String wird geschrieben T_IPG[T_zaehlIP] = T_search[T_zaehl]; T_zaehlIP++; T_zaehl++; } while(T_zaehlIP<15){ T_IPG[T_zaehlIP]=32; T_zaehlIP++; } fclose(T_Out); remove("OUT.TXT"); return; } fclose(T_Out); remove("OUT.TXT"); sprintf(T_IPG, "GETIP error"); return; } }ich hoffe ich konnte dir helfen
MFG c°h°
-
Lustiger Code.
-
IP heißt: "Internet Protocol"
Internet IP heißt: "Internet Internet Protocol"