Ip-Adresse des Rechners auslesen und in einer Variable speichern
-
Folgendes geht immer:
std::string IPAdresse="127.0.0.1"
-
rasidrasid schrieb:
ich habe winxp.
es sollte die ip-adresse in eine variable zu weiterverarbeitung speichern
dankeJa aber welche IP Adresse. Ein PC kann durchaus mehrere haben
-
wenn du unter cmd.exe ipconfig angibst, gibt es dort eine ip-adresse....diese
-
rasidrasid schrieb:
wenn du unter cmd.exe ipconfig angibst, gibt es dort eine ip-adresse....diese
Bei mir sind da drei. Welche darf's sein?
Aber wenn du weißt, dass du unter XP arbeitest und bei dir ipconfig genau eine Adresse ausgibt, dann benutz doch sowas:
system("ipconfig > ip-file"); ifstream file("ip-file"); ... [IP Adresse aus file suchen] ...
Gibt's da eigentlich auch eine bessere Methode an die Ausgabe von system Aufrugen zu gelangen? Ich benutze das sonst nie und das mit der Pufferdatei habe ich mir gerade ausgedacht.
-
SeppJ danke,
es ist genau die erste. da steht auch IP-Adresse, die anderen sind Subnetmask usw.
danke
-
rasidrasid schrieb:
ein pc hat doch eine adresse wie diese 192.168.0.1 oder irre ich mich da.
Du irrst dich. Nicht der Rechner hat eine IP-Adresse, sondern jedes Netzwerkinterface hat eine (vereinfacht gesagt). Bei mir sind es z. B. 5 verschiedene IP-Adressen und auf dem Rechner laufen VMs, die auch jeweils mehrere IP-Adressen haben. Es ist also nicht ganz so einfach.
SeppJ schrieb:
Gibt's da eigentlich auch eine bessere Methode an die Ausgabe von system Aufrugen zu gelangen?
Man kann direkt die Ausgabe lesen, ohne Umweg über eine Datei.
Edit: anscheinend mitfreopen
, gibts dafür ein C++-Äquivalent?
-
#include <winsock.h> // ... int startWinsock() { WSADATA wsa; return WSAStartup(MAKEWORD(2, 0), &wsa); } std::string getLocalAddress() { char szHostName[256]; gethostname(szHostName, 256); struct hostent *host_entry = gethostbyname(szHostName); return inet_ntoa (*(struct in_addr *)*host_entry->h_addr_list); } // ... if (startWinsock() != 0) { std::cerr << "Error: startWinsock()" << std::endl; return 1; } std::cout << getLocalAddress() << std::endl; WSACleanup(); // ...
ws2_32.lib
linken
-
danke probier ich aus
-
Hallo,
du musst unterscheiden: Ein einfaches privates Netzwerk im Internet hat zwei IPs. Die von innen sichtbare fängt häufig mit 192 an. Der Router wandelt diese um, da es gesetzlich verboten ist, sich damit im Internet aufzuhalten (siehe Netzwerkklassen A-C). Die von außen sichtbare IP fängt z.B. mit 85 an.Also Du musst erst wissen, welche IP du meinst bzw, ob dein Programm mit dem Internet etwas zu tun hat.
lg, freakC++
-
freakC++ schrieb:
da es gesetzlich verboten ist, sich damit im Internet aufzuhalten
Zeig mal das Gesetz bitte.
-
@freakC++
vll solltest du dich noch einmal mit Ip-Adressen und Netzwerken auseinadner setzen, da deine Aussage nicht ganz stimmt.
Hier hielft auch schon Wikipedia. Im Artikel zu Ip-Adressen wird Routing und Reservirte Ip-Adressen vorgestelt.