externe ip ( nicht lokale )
-
Ich brauche die IP von z.B. http://www.ip-adress.com/
Doch ich habe im Moment leider nichts gefunden. Wisst ihr was?
-
Wenn du auf die Seite gehst dann steht sie doch dort!?
-
ich brauch das aber nicht codemäßig. Ich kann nicht zu meinem benutzer sagen ja gehste ma dort hin und trägst ein.
-
Naja, der einzige sichere Weg um das rauszufinden ist eben einen Server zu fragen, was willst du sonst machen!?
-
ich brauch das aber nicht codemäßig
Also wie jetzt? Brauchst Du das in deiner Applikation oder solls der Benutzer selbst rausfinden?
-
Ich brauchs zum Arbeiten in meinem Programm und es soll nicht der user auf diese Website gehen müssen um die ip einzutragen SONDERN es soll automatisch ablaufen. Doch irgendwie scheint das gar nicht so leicht zu sein.
-
Und was genau hindert deine Anwendung statt dem User "auf eine solche Seite zu gehen"!?
-
Einfach Webseite downloaden und parsen. Z.B. mit System::Net::WebClient
MSDN: http://msdn.microsoft.com/en-us/library/system.net.webclient(v=VS.100).aspxEdit
http://stackoverflow.com/questions/1069103/how-to-get-my-own-ip-address-in-c
http://www.dreamincode.net/forums/topic/24692-showing-the-external-ip-address-in-c%23/
-
ok danke nur eine frage noch gibts da eig auch was native und ohne das .netframework? rein aus interesse.
-
Wenn du kein .NET willst wieso postest du dann ins C++/CLI Forum?
Native kannst du das natürlich selber über Sockets erledigen. Und es gibt natürlich haufenweise Libraries wie z.B. libcurl oder die WinINet Funktionen. Sogar die SFML hat sehr einfache HTTP Funktionalität eingebaut...
-
und das würde gehen wie
-
Wo genau liegt dein Problem!?
-
ich finde kein einzigen code der mir die richtige ip ausspuckt. und ich wollte auch mal etwas "schweres" probieren und das ohne .net machen
-
Wie willst du die ip denn jetzt bekommen?
-
das ist ja mein problem ich finde nichts und ich bin kein c++ experte wo das auswendig weiß. Deshalb frage ich ja euch.
-
Wir haben dir doch schon ausführlich geantwortet, was genau ist jetzt noch unklar?
-
thefiloe schrieb:
das ist ja mein problem ich finde nichts und ich bin kein c++ experte wo das auswendig weiß. Deshalb frage ich ja euch.
Du machst einen Socket auf, verbindest dich über TCP auf Port 80 mit "www.whatismyip.org", schickst einmal:
"GET / HTTP/1.0\r\n" "Host: www.whatismyip.org\r\n" "\r\n"
Und empfängst dann bis die Verbindung abbricht. Ich habe hier noch C Code rum fliegen mit dem du das testen könntest:
#include <stdio.h> #include <WinSock2.h> #pragma comment (lib, "Ws2_32.lib") void errorexit(int code, const char *msg, ...) { va_list argv; va_start(argv, msg); vprintf(msg, argv); va_end(argv); getchar(); //blah, Windows ;) exit(code); } int main() { char buf[0x1000]; int sock, rval; struct sockaddr_in addr = {0}; struct hostent *host = 0; struct WSAData wsa; if (WSAStartup(WINSOCK_VERSION, &wsa) != 0) errorexit(-1, "WSAStartup() failed with: %i.", WSAStartup(WINSOCK_VERSION, &wsa)); while (!host) { printf("Server: "); fgets(buf, sizeof(buf), stdin); buf[strlen(buf) - 1] = '\0'; host = gethostbyname(buf); } addr.sin_addr = *(struct in_addr*)host->h_addr; addr.sin_family = AF_INET; addr.sin_port = htons(80); buf[0] = '\0'; puts("Message: (double return to send)"); while (!strstr(buf, "\n\n")) { char tmp[0x100]; fgets(tmp, sizeof(tmp), stdin); strcat(buf, tmp); if (strlen(buf) > sizeof(buf) - sizeof(tmp)) break; } sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (!sock) errorexit(-2, "socket() failed with: %i.", WSAGetLastError()); if (connect(sock, (struct sockaddr*)&addr, sizeof(addr)) != 0) errorexit(-3, "Could not connect to host: %s. Error: %i.", inet_ntoa(addr.sin_addr), WSAGetLastError()); if (send(sock, buf, strlen(buf), 0) < strlen(buf)) errorexit(-4, "send() failed with: %i.", WSAGetLastError()); while ((rval = recv(sock, buf, sizeof(buf) - 1, 0)) > 0) buf[rval] = '\0', printf("%s", buf); closesocket(sock); WSACleanup(); getchar(); return 0; }
-
Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
wow danke