// Portabilité: Win32/Linux
#include <stdio.h>
#ifndef WIN32
#include <arpa/inet.h>
#else
#include <winsock2.h>
#endif
char* long2ip(unsigned int v)
{
struct in_addr x;
x.s_addr = htonl(v); // passe dans l' ordre reseau
return inet_ntoa(x); // et convertit
}
unsigned int ip2long(char *s)
{
struct sockaddr_in n;
#ifndef WIN32
inet_aton(s,&n.sin_addr);
return ntohl(n.sin_addr.s_addr);
#else
return ntohl(inet_addr(s));
#endif
}
int main(int argc, char *argv[])
{
// ip2long
char* str="127.0.0.1";
unsigned int f = ip2long(str);
printf( "ip2long(%s) => %u\n\n", str, f );
// long2ip
printf( "long2ip(2130706433) => %s\n", long2ip(2130706433) );
return 0;
}