Ip Adresse bestimmen
-
Guten Morgen
Ich möchte die IP Adresse mit einem Programm auslesen. Ich habe im I-net einige Beispiele gefunden und diese getestet.
Mit der Funktion "gethostname" kann ich den Namen meines Rechners auslesen und mit "gethostbyname" die Adresse bestimmen. So weit so gut, leider wird aber nur die lokale IP zurück geliefert, 127.0.0.1. Ich möchte aber die Adresse der Netzwerkkarte, diese sollte 192.168.0.3 sein.
Das Beispiel bei
http://spotlight.de/zforen/cpp/m/cpp-1130260272-5909.html
habe ich auch probiert, das liefert mir wieder zweimal 127.0.0.1.Was mache ich falsch? Danke für eure Hilfe
-
welchen namen gibst du denn an?
Wenn's Localhost ist, dann ist das per Definition 127.0.0.1
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hallo
Der ist der meines Rechners "Box", die IP 127.0.0.1
-
ist er denn real mit anderen Rechnern verbunden?
-
Ja, er hängt am Netz, ich schreibe damit gerade diesen Text. Ich habe Knoppix 3.7 installiert mit den Kernel 2.4.x.
Alles läuft soweit, bei ifconfig meldet er das Device eth0 mit 192.168.0.3 und das Lokale Device lo 127.0.0.1.
Beim Programm unten (gefunden auf http://spotlight.de/nzforen/cpp/m/cpp-1130260272-5909.html)
bekomme ich folgende Ausgabe:
localhost: 127.0.0.1
Box: 127.0.0.1Der Author des Programms bekommt die "richtige" Ausgabe:
localhost: 127.0.0.1
zombie: 192.168.0.5#include <sys/socket.h> #include <sys/types.h> #include <iostream> #include <netdb.h> #include <netinet/in.h> #include <arpa/inet.h> char *GetIP(struct hostent *host) { struct sockaddr_in addr; char *ip; addr.sin_addr = *(struct in_addr*) host->h_addr; ip = inet_ntoa(addr.sin_addr); return ip; } int main(void) { char s[128], *ip; struct hostent *host; struct sockaddr_in addr; host = gethostbyname("localhost"); std::cout << "localhost: " << GetIP(host) << "\n"; gethostname(s, 128); host = gethostbyname(s); std::cout << s << ": " << GetIP(host) << "\n"; }
-
vielleicht führt dieser Author ja das Programm _nicht_ auf Zombie aus, sondern von einem anderen Rechner.
-
siehe unix/linux-faq
-
Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Rund um die Programmierung in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Super, wer lesen kann, hat halt doch Vorteile...
Ich habe mich so auf das gethostbyname fixiert, dabei geht es auch anders.
Danke!