inet:ip/1

Matthias Lang <>
Wed Apr 12 23:41:22 CEST 2006


This doesn't seem to be erlang-specific behaviour, which makes me
suspect that there's more to this than appears at first glance.

Try playing around with the attached program.

Matthias

--------------------

Serge Aleynikov writes:
 > While playing with the inet:ip/1 function I noticed that it can take an 
 > argument containing less than four octets.  What's the meaning of such a 
 > strange conversion like inet:ip("1.2.3")?
 > 
 > 1> inet:ip("1.2.3.4").
 > {ok,{1,2,3,4}}
 > 2> inet:ip("1.2.3").
 > {ok,{1,2,0,3}}
 > 3> inet:ip("1.2").
 > {ok,{1,0,0,2}}
 > 4> inet:ip("1").
 > {ok,{0,0,0,1}}
 > 
 > Serge

----------------------------------------------------------------------
#include <netdb.h>
#include <stdio.h>
#include <assert.h>

int main() {
	struct hostent* he;
	unsigned char** addr;

	he = gethostbyname("1");

	assert(he);
	addr = he->h_addr_list;

	while (*addr) {
		printf("hostent entry: %u.%u.%u.%u\n", **addr, *(*addr+1), *(*addr+2), *(*addr+3));
		addr++;
	}

	return 0;
}



More information about the erlang-questions mailing list