第一范文网 - 专业文章范例文档资料分享平台

计算机网络课程设计ip地址的合法性及子网判断

来源:用户分享 时间:2025/5/15 6:37:49 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

#include #include #include #include #include #include

#pragma comment(lib,\//类结构 class ipTest{ public:

char ip[15];

char subnetPlusMask[18]; char subnet[18]; char TempIp[15];

l maskIsValid;

int mask; char Tempsub[18];

ipTest(char *,char *); } ; //主函数

void main(int argc,char * argv[]){

if(argc!=3){ //判断参数格式化是否正确

cout<<\~ipTest(){};

bool NoIllegalChar(char *); //非法字符的判断 bool ipIsValid(char *); //判断IP地址是否合法 bool subnetIsValid(char *); //判断子网号是否合法 void belong(); //判断IP是否为子网成员 print();

}

}

return;

else{ }

if(strlen(argv[1])>18){ //先判断最简单的错误,长度是否超出 }

if(strlen(argv[2])>15){ }

ipTest test(argv[1],argv[2]); //实例话ipTest类

test.print(); //完成相应判别并输出结果

cout<<\return;

cout<<\return;

//构造函数

ipTest::ipTest( char* subnetPlusMask, char *ip){

maskIsValid=true; char temp[2];

//把'/'前的字符复制到subnet字符数组中 int smLen=strlen(subnetPlusMask);

for( int i=0; i

subnet[i]='\\0'; Tempsub[i]='\\0';

if(i<=smLen-2){ //初始化mask和maskIsVslid

if(i==smLen-2){

temp[0]=subnetPlusMask[i+1]; this->subnet[i]=subnetPlusMask[i]; this->Tempsub[i]=subnetPlusMask[i];

}

if( !isdigit(temp[0]) )

maskIsValid = false;

else if( i == smLen-3 ){

temp[0]=subnetPlusMask[i+1]; } }

//调用判别函数,并输出结果 ipTest::print(){

bool subIsV=subnetIsValid(Tempsub); bool ipIsV=ipIsValid(TempIp); if(!subIsV)

cout<<\else

cout<<\ \if(!maskIsValid) else

cout<<\

else

maskIsValid=false;

}

mask = atoi(temp); if( mask<0 || mask > 32)

maskIsValid = false;

temp[1]=subnetPlusMask[i+2];

if( !(isdigit(temp[0])&&isdigit(temp[1])) )

maskIsValid=false;

strcpy( this->subnetPlusMask, subnetPlusMask); strcpy( this->ip, ip ); strcpy( this->TempIp, ip );

cout<<\

if(!ipIsV) cout<<\

else

cout<<\ //判断IP是否belong subnet if(subIsV&&ipIsV&&maskIsValid)

belong();

}

//子函数,判断输入是否含有非数字字符 bool ipTest::NoIllegalChar(char *ch){ unsigned int i,k=0; for(i=0;i

}

} return true;

}

//判别IP地址是否合法 bool ipTest::ipIsValid(char * ip){

char ch[]=\ char *token,*dot[4];

int iplen=0;

token=strtok(ip,ch); while(token!=NULL){ dot[iplen]=token; iplen++;

token= strtok(NULL,ch);

}

//以\标志将IP字符串按节分开 //循环进行,知道结束 //将分开的每段赋值给dot

}

if(iplen!=4)

{cout<Tempsub<

return false;} //段数不对

for(int i=0;i<4;i++){ } return true;

if(!NoIllegalChar(dot[i])||atoi(dot[i])>255) //有非法字符或某段值非法 return false;

//判断子网号是否合法

bool ipTest::subnetIsValid(char* subnet){ }

if( ! ipIsValid(subnet)) //调用判别IP地址合法性的函数

return false;

return true;

//判断IP是否为子网成员,判断子网号与掩码是否匹配,以及子网号、主机号全0全1问题

void ipTest::belong(){

int subLen=strlen(subnet); int ipLen=strlen(ip);

unsigned int iIPA,iSubA,iMask; unsigned char subA[4],ipA[4]; char temp[3]; int i,j,t=0;

for(i=0,j=0;i

if(subnet[i] != '.')

temp[j++]=subnet[i]; //temp数组中放'.'间的串

else{

subA[3-t] = atoi(temp); //subA数组中放'.'间的数据 j=0; t++;

计算机网络课程设计ip地址的合法性及子网判断.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c91291176xh797950lpza3sk4u09qt500fkv_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top