How do I find my own IP address?

Bengt Kleberg <>
Wed Jan 21 17:01:03 CET 2004


Joe Armstrong wrote:
> I need to know my own IP address
> 
> I can find my hostname
> 
> 1> inet:gethostname().
> {ok,"enfield"}
> 
> And do this
> 
> 2> inet:gethostbyname("enfield").
>  
> {ok,{hostent,"localhost.localdomain",
>              ["localhost","enfield"],
>              inet,
>              4,
>              [{127,0,0,1}]}}
> 
> But 127.0.0.1 is not my IP address

if you are interested i have written a c program to do some of the 
things above (this is what i suppose the inet module is/does).
if you run it, what kind of information does it print?


bengt

#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>






main(int argc, const char* argv[])
{
	char name[80];
	struct hostent *hp;
	char **p;

	if (0 != gethostname(name, sizeof (name))) {
		(void) printf("gethostname failed\n");
		exit (1);
	}

	hp = gethostbyname(name);
	if (hp == NULL) {
		(void) printf("host information for %s not found\n", name);
		exit (3);
	}

	for (p = hp->h_addr_list; *p != 0; p++) {
		struct in_addr in;
		char **q;

		(void) memcpy(&in.s_addr,	*p, sizeof (in.s_addr));
		(void)printf("%s\t%s", inet_ntoa(in),	hp->h_name);

		for (q = hp->h_aliases; *q != 0; q++) {
			(void) printf(" %s", *q);
		}

		(void) putchar('\n');
	}

	exit (0);
}



More information about the erlang-questions mailing list