eigene IP-Adresse ausgeben
-
Hallo,
ich habe folgendes Problem: ich würde ganz gerne die eigene IP-Adresse ausgeben.Da das problem mit Standard-C++ vermutlich nicht zu lösen ist gleich hier im WinAPI-Forum.
Ich habe auch schon einige Beispiele aus dem web ausprobiert , allerdings haben die bislang nur fehlermeldungen produziert
.z.B.dieses : http://www.tutorials.de/forum/c-c/291611-c-ip-ausgeben-2.html
so gibt der compiler die fehlermeldung aus:
fatal error C1083: Datei (Include) kann nicht geöffnet werden: "stdafx.h": No such file or directorywenn ich dieses include weglasse gibt er 78 Fehler aus
, z.B.:(31) : error C3861: "WSACleanup": Bezeichner wurde nicht gefunden.
(28) : error C2027: Verwendung des undefinierten Typs "hostent"
(24) : error C3861: "gethostname": Bezeichner wurde nicht gefunden.
...so ähnlich ging es mir bislang bei allen beispielen aus dem web, ich habe noch kein funktionierendes gefunden.
ich verwende Windows XP und Microsoft Visual C++ 2008 Express Edition.
Was ist denn z.B.an dem beispiel falsch oder (noch besser) hat jemand vielleicht sogar ein funktionierendes oder einen link zu einem funktionierenden?
danke schonmal,
andi01.
-
Schonmal in die winap faq hier im forum geguckt...

-
jo,
dieser code hier produziert bei mir 282 Fehler
: http://www.c-plusplus.net/forum/viewtopic-var-t-is-39386.html
meistens sowas wie default-int nicht unterstütztdieser hier http://www.c-plusplus.net/forum/viewtopic-var-t-is-39385.html
(natürlich um main() ergänzt)283 fehler, eigentlichdieselben wie oben.mfg,
andi01.
-
Also was für Fehler kommen denn genau bei
#include <iostream> #include <winsock2.h> #include <windows.h> using namespace std; #pragma comment(lib,"ws2_32.lib") // für MSV C++ int main() { WSADATA wData; if (WSAStartup(MAKEWORD(2, 0), &wData ) == 0) { char hostname[255]; if (gethostname(hostname, sizeof(hostname)) == 0) { PHOSTENT hostinfo; if((hostinfo = gethostbyname(hostname)) != 0) cout << inet_ntoa(*(struct in_addr *)*hostinfo->h_addr_list) << endl; } WSACleanup(); } return 0; }Und das gibt nur die primäre IP des Hosts mit dem Namen deines Rechners aus.
-
da ich unmöglich 283 fehler hier posten kann hab ich mal ne txt-datei die diese fehler beinhaltet upgeloadet:
http://rapidshare.com/files/273888689/ip_cpp-fehler.txt.htmledit: bei deinem code kommen keine fehler, das problem ist gelöst. nur warum treten bei dem anderen code die fehler auf?
-
Die ersten 10 reichen meist...
Simon
-
hier mal die ersten 10:
1>c:\programme\microsoft sdks\windows\v6.0a\include\wininet.h(58) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'HINTERNET'
1>c:\programme\microsoft sdks\windows\v6.0a\include\wininet.h(58) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\programme\microsoft sdks\windows\v6.0a\include\wininet.h(58) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\programme\microsoft sdks\windows\v6.0a\include\wininet.h(59) : error C2143: Syntaxfehler: Es fehlt ';' vor '*'
1>c:\programme\microsoft sdks\windows\v6.0a\include\wininet.h(59) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\programme\microsoft sdks\windows\v6.0a\include\wininet.h(59) : error C2378: 'HINTERNET': Neudefinition; Symbol kann nicht mit typedef überladen werden
1> c:\programme\microsoft sdks\windows\v6.0a\include\wininet.h(58): Siehe Deklaration von 'HINTERNET'
1>c:\programme\microsoft sdks\windows\v6.0a\include\wininet.h(59) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\programme\microsoft sdks\windows\v6.0a\include\wininet.h(61) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'INTERNET_PORT'
1>c:\programme\microsoft sdks\windows\v6.0a\include\wininet.h(61) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\programme\microsoft sdks\windows\v6.0a\include\wininet.h(61) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.mfg,
andi01.
-
naja, letztlich is es ja eigentlich egal, der code von lagalopex funktioniert ja. wäre bloß mal interessant zu wissen woher all diese fehler kamen.
mfg,
andi01.
-
vielleicht klappt es wenn du #include <windows.h> über bzw. unter #include <winsock2.h> schreibst (einfach mal ändern)
-
hatte ich auch schon erfolglos probiert
.
ich weiß wirklich nicht woran das mit den fehlern lag...jedenfalls schonmal danke für die bisherigen antworten
.wäre trotzdem schön wenn mir noch jemand erklären könnte woher die fehler kamen.
mfg,
andi01.
-
bei mir zickt die "winsock2.h" auch rum, nimm mal:
#include <winsock.h> #include <wininet.h>
-
danke, jetzt hat auch der alte code mit den vielen fehlern funktioniert
. damit ist das problem gelöst.danke für die ganzen antworten,
andi01.