unsigned long ip2ulong(char *ip)
{
unsigned u1, u2, u3, u4;
return sscanf(ip, "%u.%u.%u.%u", &u1, &u2, &u3, &u4) == 4 &&
u1 <= 255 && u2 <= 255 && u3 <= 255 && u4 <= 255
? u1*256*256*256 + u2*256*256 + u3*256 + u4 : 0;
}
static void long2ip(unsigned long ip, char buf[]){
int i = 0;
unsigned long tmp[4] = {0};
for(i = 0; i < 4; i++){
tmp[i] = ip & 255;
ip = ip >> 8;
}
sprintf(buf, "%lu.%lu.%lu.%lu", tmp[0], tmp[1], tmp[2], tmp[3]);
}