#include
#include
#include
#include
#include
#include
#include
#include
#define MAX 256
int count(char str[],char c)
{
int i,num = 0; // the number of times c is in str
for(i = 0; i < strlen(str); ++i)
{
if( str[i] == c )
num++;
}
return num;
}
char *find_network_address(struct in_addr addr,char *m)
{
struct in_addr mask,netw_addr;
char *buf;
inet_aton(m,&mask); //convert dotted decimal address into binary
netw_addr.s_addr=addr.s_addr & mask.s_addr;
buf=(char*)inet_ntoa(netw_addr); //convert binary address into dotted decimal address
return buf;
}
int main()
{
struct in_addr addr,mask,netw_addr;
int
result=0,n;
char *buf,IP[MAX];
printf("\n Input an IP address:");
fgets(IP,MAX,stdin);
if(count(IP,'.') != 3)
{
printf("\n Invalid address\n");
return 0;
}
n=inet_aton(IP, &addr);
//convert dotted decimal address into binary
if(n==0)
{
printf("\n Invalid address\n");
return 0;
}
result=addr.s_addr & 255;
if(result >=0 && result <=127)
{
printf("\n Class A address\n");
printf("\n Subnet mask 255.0.0.0");
printf("\n Network address:%s\n",find_network_address(addr,"255.0.0.0"));
}
else if (result >=128 && result <= 191)
{
printf("\n Class B address\n");
printf("\n Subnet mask 255.255.0.0");
printf("\n Network address:%s\n",find_network_address(addr,"255.255.0.0"));
}
else if (result >=192 && result <= 223)
{
printf("\n Class C address\n");
printf("\n Subnet mask 255.255.255.0");
printf("\n Network address:%s\n",find_network_address(addr,"255.255.255.0"));
}
else if (result >=224 && result <= 239)
{
printf("\n Class D address");
printf("\n Used only for multicast addressing\n");
}
else if (result >=240 && result <= 255)
{
printf("\n Class E address\n");
printf("\n Reserved for Future use\n");
}
else
printf("\n Invalid IP Address\n");
}
Copyright © 2011 - All Rights Reserved - Softron.in
Template by Softron Technology