ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:17.91KB ,
资源ID:16388990      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16388990.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(IP地址的合法性和子网判断Word文档下载推荐.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

IP地址的合法性和子网判断Word文档下载推荐.docx

1、 for(int i=0;istrlen(c);i+) if(isdigit(ci)=0 & ci!=.) coutIP地址中含有非法字符! return ; if(ci= dotnum+; /判断IP地址中只能存在3个分隔符 if(dotnum!=3)IP地址中分隔符只能为3个! /判断IP地址中是否存在连续分隔符 for(i=0;strlen(c)-1; if(ci= & ci+1=IP地址中出现连续的分隔符! /分割IP地址void bb(char c15) /判断IP地址中最后不能为分隔符 for(int m=0;m4;m+) ipm=0; int len; len=strlen(c)

2、; if(clen-1=IP地址最后们不能为分隔符! char temp415; for(int j=0;j15;j+) tempij=0; int j=0; i=0; for(int k=0;k3)IP地址每位长度不能超过3! switch(len) case 3: while(len!=0) ipi+=(tempilen-1-48)*pow(10,3-len); len-; break; case 2: ipi+=(tempilen-1-48)*pow(10,2-len); default: ipi+=(tempilen-1-48)*pow(10,1-len); long int num=

3、0; /判断每位的大小不超过255 if(ipi255)IP地址数字不能超过255!/分割网络地址void ee(char c15) /判断网络地址中最后不能为分隔符 subnetm=0;子网号最后们不能为分隔符!子网号每位长度不能超过3! subneti+=(tempilen-1-48)*pow(10,3-len); subneti+=(tempilen-1-48)*pow(10,2-len); subneti+=(tempilen-1-48)*pow(10,1-len); if(subneti子网号数字长度不能超过255!/生成子网掩码void cc() cout子网掩码为: int r3

4、2;num; ri=1;32-num; ri+=0; int p=0; int w8; int k=0; int sum=0; for (int n=0;n8;n+) wp=rk; sum=sum+wp*pow(2,7-n); p+; k+; p=0; am=sum; for(int n=0;an; if(n!. coutIp_addr;请输入连续1的个数:请输入子网号:sub_net;IP地址为:Ip_addri;子网号为:sub_netj; aa(Ip_addr); bb(Ip_addr); cc(); ee(sub_net); dd();是否继续是(其他键)否(n)jj;(2)题目要求:

5、编写程序,判断一个IP地址是否合法,并判断该地址是否属于一个给定的子网。要求:1)以命令行格式运行:ip_test subnet/mask ip_addr 其中ip_test为程序名;subnet为子网号;mask是一个数值,代表子网掩码连续1的个数;ip_addr是要测试的ip地址。 例如,要测试的IP地址为202.113.16.10,子网号为202.113.16.0,子网掩码为255.255.255.0 2)判断subnet和ip_addr的合法性(注意考虑全面,比如以下IP均为不合法 123.2.1 123.23$.2.1 123.12345.2.1 123.23.45.2.13)判断掩

6、码的合法性4) 在IP地址合法的前提下,判断ip_addr是否属于子网subnet5)输出命令行中的IP是否合法,掩码是否合法(可适当给出不合法原因)以及ip_addr是否属于子网subnet。我做的程序代码如下:iostream.hstring.hstdlib.hvoid split(char *addr,int *num)/将点分十进制的字符串转换为数值数组 char temp410; int i,j,k,len=strlen(addr); for(j=0;10; tempij= k=0;len; if(addri! tempjk=addri; j+; numi=atoi(tempi);i

7、nt toBinary(int a)/将十进制数转换为二进制数 if(a/2=0) return a%2; return a%2+toBinary(a/2)*10;char * toString(int *a)/将二进制的数值数组转换32个字符长的字符指针 char *temp=new char33; int i; bool flag=false; char *eight=new char(),*seven=new char(),*six=new char(),*five=new char(),*four=new char(), *three=new char(),*two=new char(

8、),*one=new char(); itoa(ai/10000000,eight,10); itoa(ai/1000000%10,seven,10); itoa(ai/100000%10,six,10); itoa(ai/10000%10,five,10); itoa(ai/1000%10,four,10); itoa(ai/100%10,three,10); itoa(ai/10%10,two,10); itoa(ai%10,one,10); if(flag=true) strcat(temp,eight); strcpy(temp,eight); flag=true; strcat(te

9、mp,seven); strcat(temp,six); strcat(temp,five); strcat(temp,four); strcat(temp,three); strcat(temp,two); strcat(temp,one); return temp;int test(char *addr)/测试IP等点分十进制数的合法性,返回0则不合法,返回1则合法 int len=strlen(addr);地址总长超过了15! return 0; if(addri9) & addri! 地址中包含非法字符! if(addri= if(dotnum地址中分隔符只能为3个!len-1; if

10、(addri= addri+1=地址中不能出现连续的分隔符! if(addrlen-1=地址最后位不能为分隔符! int a4; split(addr,a); if(ai255 | ai0)地址数字不在范围0-255之间! if(a01)地址首位不能为0! return 1;void main(int argc,char * argv) if(argc!请按以下格式输入命令行:ip_test subnet/mask ipaddr int i,j=0; char *ipaddr=new charstrlen(argv2); strcpy(ipaddr,argv2); /字符串格式的IP地址 ch

11、ar *subnet_mask=new charstrlen(argv1); strcpy(subnet_mask,argv1); char *subnet=new char16; char *mask_num=new char4; int len=strlen(subnet_mask);i+) /分离子网号及子网掩码中1的个数 if(subnet_maski=/ flag=true; subnetj= continue; if(flag=false) subnetj=subnet_maski; mask_numj=subnet_maski; mask_numj=IP地址测试: if(test

12、(ipaddr)=1)ipaddr合法不合法子网号测试: if(test(subnet)=1)subnet0 & maskn=32)个数为:mask_num,合法!,不合法! /将IP地址与子网号转成数值放在数组中 int nbipaddr4,nbsubnet4; split(ipaddr,nbipaddr);/分离,未转成二进制,只是分离成十进制 split(subnet,nbsubnet); nbipaddri=toBinary(nbipaddri);/将分离出来的十进制转换为二进制 nbsubneti=toBinary(nbsubneti); char *cbipaddr=new cha

13、r33; char *cbsubnet=new char33; cbipaddr=toString(nbipaddr);/将二进制数组转换为32位的二进制字符指针 cbsubnet=toString(nbsubnet); /测试是否在子网内,是否需转成二进制比较,可用递归转成二进制(除二取余)maskn; if(cbipaddri!=cbsubneti)IP地址:不属于这一子网属于对于判断是否属于给定的子网,我采用的方式是将IP地址与子网地址的点分十进制方式都转化为不带分隔符的二进制数,都是32位长,对于给予的子网中1的个数,我只判断其范围,对于其他原因,并示考虑到,希望你看到后,能给予提示,谢谢!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1