Hoi allemaal,
ik probeer momenteel uit te zoeken hoe ik met gebruik van C onder Linux er achter kan komen wat voor IP adres(sen) mijn Linux (mdk10) machine heeft. Het enige wat ik echter te weten kan komen is het adres 127.0.0.1 (loopback), niet echt nuttig... de code die ik hiervoor gebruik is:
Maar de uitvoer van dit programmaatje zegt mij
Inderdaad, de hostnaam is 'localhost' (hier heb ik verder geen andere naam aan gegeven). Is er geen manier om er achter te komen wat het echte adres van mijn machine (DHCP toegewezen) is? In /etc/hosts staat een enkele entry (localhost/127.0.0.1)
Zoek ik op de verkeerde plek? De combinatie gethostname/gethostbyname lijkt me inderdaad niet ideaal voor gebruik op 1 machine maar vooralsnog ben ik niets tegengekomen wat hetzelfde doet maar dan wel goed. Iemand een idee?
ik probeer momenteel uit te zoeken hoe ik met gebruik van C onder Linux er achter kan komen wat voor IP adres(sen) mijn Linux (mdk10) machine heeft. Het enige wat ik echter te weten kan komen is het adres 127.0.0.1 (loopback), niet echt nuttig... de code die ik hiervoor gebruik is:
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| /* from gethostbyname manpage: struct hostent { char *h_name; char **h_aliases; int h_addrtype; int h_length; char **h_addr_list; }; #define h_addr h_addr_list[0] */ int main () { char name[256]; gethostname (name, 256); struct hostent *he = gethostbyname (name); printf ("h_name = `%s'\n", he->h_name); // print aliases printf ("aliases:\n"); int i = 0; while (he->h_aliases[i] != NULL) printf ("* %s\n", he->h_aliases[i++]); // print all registered addresses printf ("addresses:\n"); i = 0; while (he->h_addr_list[i] != NULL) printf ("Addr %d = %s\n", i, inet_ntoa(*((struct in_addr *)he->h_addr_list[i++]))); return 0; } |
Maar de uitvoer van dit programmaatje zegt mij
code:
1
2
3
4
| h_name = `localhost' aliases: addresses: Addr 1 = 127.0.0.1 |
Inderdaad, de hostnaam is 'localhost' (hier heb ik verder geen andere naam aan gegeven). Is er geen manier om er achter te komen wat het echte adres van mijn machine (DHCP toegewezen) is? In /etc/hosts staat een enkele entry (localhost/127.0.0.1)
Zoek ik op de verkeerde plek? De combinatie gethostname/gethostbyname lijkt me inderdaad niet ideaal voor gebruik op 1 machine maar vooralsnog ben ik niets tegengekomen wat hetzelfde doet maar dan wel goed. Iemand een idee?