(Linux/Unix) IP des lokalen Rechners?
-
Heho,
ich habe mal wieder ein Problem.
local.sin_addr.s_addr=inet_addr ("192.168.0.1");
local.sin_port=htons(2222);
local.sin_family=AF_INET;oder
ip->saddr=inet_addr("192.168.0.1");Wie kann ich dafür sorgen, das statt der IP 192.168.0.1 immer
automatisch die IP des Rechners angegeben wird?
Ich möchte das nicht immer per Konsole übergeben. Wenn ich es
so mache wie oben ist es aber zu unflexibel und würde nur
auf dem Rechner laufen der auch eine solche IP hat.thx!
-
ind der winapi FAQ ist ein bsp. wie man die IP rausbekommt.
-
Du willst die IP des lokalen Rechners?
127.0.0.1
mfg grottenolm
-
Keine WinApi, programmiere unter Linux.
Zum Localhost:
Nein eben das geht mir Raw Sockets nicht.Dann wird wirklich die IP 127.0.0.1 eingesetzt... was nicht im Sinne des Erfinders ist...
-
Wieso nicht?
127.0.0.1 ist IMMER der eigene Rechner, egal wo....
-
@hepi
Ja, aber wenn er diese Adresse in den Header eines Packages schreibt(als SourceAddr) und dieses dann an ein anderes lokales Netzwerk Device schickt, wird niemals eine Antwort zurückkommen.@an0nym
Hättest mal schreiben sollen, dass du was für Raw Sockets haben willst
Kenne aber leider keine Funktion, mit der du das hier Lösen könntest....mfg grottenolm
-
für ein spezielles lokales interface..
#include <stdio.h> #include <sys/ioctl.h> #include <linux/sockios.h> #include <sys/socket.h> #include <net/if.h> #include <arpa/inet.h> #define IFACE "eth0" int main(void) { int s; struct ifreq ifr; s = socket(AF_INET,SOCK_DGRAM,0); memset(&ifr,0,sizeof(struct ifreq)); strncpy(ifr.ifr_name,IFACE,IF_NAMESIZE); ioctl(s,SIOCGIFADDR,&ifr); printf("%s\n",inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr)); return 0; }