# Eigene Internet IP auslesen



## EddiModder (2. Mai 2004)

Hi leutz,

wie bekomme ich es hin das ich meine Eigene IP auslesen kann?

THX schonmal im vorraus

greeze ed2k


----------



## Kachelator (2. Mai 2004)

Guckst du hier.

Was hat das übrigens mit C zu tun?


----------



## EddiModder (2. Mai 2004)

Wie ich die rausbekomme is mir schon klar aber wie realiesre ich das in c++.

also ich will meine eigene ip auslesen und diese dann abspeichern.

greeze ed2k


----------



## Kachelator (2. Mai 2004)

Ach so, sorry, da hatte ich ein Brett vorm Kopf -- kann passieren.  

Leider weiss ich das im Moment auch nicht. Es wäre aber eine Möglichkeit, von C aus einen HTTP-Request zu starten, der eben diese Seite aufruft und die IP ausliest. 

Arbeitest du mit Windows?


----------



## EddiModder (2. Mai 2004)

jep mit xp.
und wie mach ich das mit dem http request?

greeze ed2k


----------



## Kachelator (2. Mai 2004)

Entweder du machst es mit MFC und siehst dir diese Beispiel an: Klick!

Oder du wartest, bis Endurion sich dazu äussert. Der kennt sich nämlich damit besser aus als ich. Würde mich auch interessieren.


----------



## Endurion (2. Mai 2004)

*geschmeicheltfühl*

Mal guggen, ob's gerechtfertigt war:

Es gibt da ein paar Varianten, nicht alle klappen immer, und manchmal geht es auch gar nicht:

Variante A:

Über die beiden Socket-Funktionen:

gethostname holt den eigenen Servernamen, und gethostbyname holt die IP-Adresse. Das Problem ist, gethostbyname fragt deinen DNS-Server, welche IP du hast. Das klappt bei statischen IPs, aber nicht aber bei dynamisch zugewiesenen.

Variante B:

Tatsächlich eine Verbindung aufbauen und dann die eigene IP abfragen. Problem, es wird eine Verbindung irgendwohin aufgebaut.

connect(sock, &addr, sizeof addr);
adlen = sizeof addr;
getsockname(sock, &addr, &adlen);
printf("My address: %s\n", inet_ntoa(addr.sin_addr));

Variante C:

Du bist hinter einem Router, und alle Rechner im lokalen Netz haben nach außenhin dieselbe IP. Geht nicht. Dein Rechner hat keine "richtige" IP, nur eine lokal zugewiesene. Dein Rechner ist von aussen her nicht eindeutig identifizierbar.

Es gibt vermutlich noch ein paar Varianten, aber das sind die mir bekannten (bzw. grade gegoogelten).
Sämtliche Code-Schnipsel sind eben das, Schnipsel. Kann man nicht direkt kompilieren, muss man evtl. anpassen. Sollte aber kein Problem sein.


----------



## Kachelator (2. Mai 2004)

Hm, da würde ich doch zu der Variante mit dem Httprequest per MFC raten.


----------



## cplus1 (20. Juni 2005)

Hallo zusammen,

ähnliches Problem von mir ... an die Gurus 

habe auf meinem Rechner 2 Netzwerkkarten.
Wie ermittle ich beide IP-Adressen ? (oder ganz allg. x-IPs eines Rechners)
Kann das gethostbyname() ... ? 

Schönen Dank im Voraus
Gruss


Nachtrag:
Habe es zu spät gesehen ...   
bei meiner Anfrage geht es nicht um Internet-IPs ...
sorry, dass ich hier nun etwas mische ...


----------



## Tobias K. (20. Juni 2005)

moin


Vielleicht hilft dir GetAdaptersAddresses   
Hab jetzt aber keine Zeit zu probieren.


mfg
umbrasaxum


----------



## uhu01 (20. Juni 2005)

Hy!

Sollte es möglich sein andere lib's zu verwenden, gibts in der WinPCAP  Library eine Funktion namens pcap_findalldevs() mit der du alle Informationen über die einzelnen Netzwerk-Adapter auslesen kannst.
Einziger Nachteil: du musst den WinPACP Treiber installiert haben (gibt aber auch einen silent-installer)

mfg
uhu01


----------



## NastyMorBol (5. Juli 2005)

Habe seiner Zeit mal ein kleines Tool geschrieben um die INet-IP auszulesen. Einfach "http://checkip.dyndns.org/" auslesen und IP rausfiltern. Fertig!

MfG Steve !


----------

