编写一个判断IP地址是否合法的计算机程序如果合法给出其子网号Word文档下载推荐.docx

上传人:b****5 文档编号:18890979 上传时间:2023-01-02 格式:DOCX 页数:9 大小:91.40KB
下载 相关 举报
编写一个判断IP地址是否合法的计算机程序如果合法给出其子网号Word文档下载推荐.docx_第1页
第1页 / 共9页
编写一个判断IP地址是否合法的计算机程序如果合法给出其子网号Word文档下载推荐.docx_第2页
第2页 / 共9页
编写一个判断IP地址是否合法的计算机程序如果合法给出其子网号Word文档下载推荐.docx_第3页
第3页 / 共9页
编写一个判断IP地址是否合法的计算机程序如果合法给出其子网号Word文档下载推荐.docx_第4页
第4页 / 共9页
编写一个判断IP地址是否合法的计算机程序如果合法给出其子网号Word文档下载推荐.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

编写一个判断IP地址是否合法的计算机程序如果合法给出其子网号Word文档下载推荐.docx

《编写一个判断IP地址是否合法的计算机程序如果合法给出其子网号Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《编写一个判断IP地址是否合法的计算机程序如果合法给出其子网号Word文档下载推荐.docx(9页珍藏版)》请在冰豆网上搜索。

编写一个判断IP地址是否合法的计算机程序如果合法给出其子网号Word文档下载推荐.docx

A类地址的第一位为0。

B类地址的第两位为10。

C类地址的第三位为110。

D类地址的第四位为1110。

E类地址的第五位为11110。

五类IP地址的结构如下所示:

网络号(7位)

主机号(24位)

10

网络号(14位)

主机号(16位)

110

网络号(21位)

主机号(8位)

1110

组播地址(28)

11110

保留用于课程设计和将来使用

A类IP地址结构使用于有大量主机的大型网络。

由于主机号长度为24位,因此每一个A类网络的主机IP数理论上为2^24=16777216,由于全0和全不能用,所以每一个A类网络的主机IP数为16777214。

B类IP地址适用于一些国际性大公司与政府机构等中等大小的组织。

由于网络IP长度为14位,因此允许有2^14=16384个不同的B类网络,实际允许连接16382个网络。

C类IP地址适用于一些小公司与普通研究机构。

2.设计IP地址的最初目的是希望每个IP地址都能唯一地、确定地标示一个网络或一台主机,但是这种方法同时也存在着两个重要的问题,即IP地址的有效利用率和路由器的工作效率。

为了解决这个问题,人们提出了子网(subnet)和超网(supernet)的概念。

划分子网实际上就是在IP地址系统中增加一个层次。

三级IP地址的表示方法为netID-subnetID-hostID。

第一级网络号定义了网点的位置;

第二级网络号定义了物理子网;

第三级主机号定义了主机和路由器到物理网络的连接。

划分子网后原两级IP地址就变成三级的。

子网掩码的表示方法:

网络号和子网号置1,主机号置0。

若要从IP地址中提取出子网号将IP地址与子网掩码相与即可。

二、设计方案

该程序所完成的功能有判断IP地址是否合法,然后输出其子网号。

判断IP地址是否合法比较容易完成,然后把输入的IP地址以数组的形式输出其二进制形式,这牵扯到一个十进制转二进制的程序段。

然后输入子网掩码,并将其转换成二进制。

将IP地址的二进制遇子网掩码的二进制逐位相与,得到的结果就是其子网号,然后需要编写一个二进制转十进制的程序,将子网号以点分十进制的形式输出,即完成实验要求。

1.验证ip地址合法性流程图:

2.验证子网掩码是否正确

三、程序编写

#include<

stdio.h>

#include<

math.h>

voidmain()

{

intm,i,j,ip[4],ym[4],ymm[4][8],ipp[4][8],t,zw[4],l;

intok[4]={0,0,0,0};

printf("

请输入一个IP地址!

\n"

);

loop:

scanf("

%d.%d.%d.%d"

&

ip[0],&

ip[1],&

ip[2],&

ip[3]);

if((ip[0]>

=0&

&

ip[0]<

224)&

(ip[1]>

ip[1]<

256)&

(ip[2]>

ip[2]<

(ip[3]>

ip[3]<

256))

{if(ip[0]==0&

ip[1]==0&

ip[2]==0&

ip[3]==0)//把地址为全零的IP地址除去

m=0;

else

if(ip[0]==127)//将127.0.0.0去除

m=0;

if(ip[1]==255&

ip[2]==255&

ip[3]==255)//将主机号为全1的去除

m=0;

else

if(ip[1]==0&

ip[3]==0)//将主机号为全0的去除

else

m=1;

}

elsem=0;

switch(m)//用m的值判断ip地址是否合法,m=0时不合法,m=1时合法

case0:

{printf("

此地址不合法!

printf("

重新输入请按ENTER,否则请按其他任意键!

%d"

l);

if(l==1)

gotoloop;

else

if(l!

=1)break;

case1:

{//判断地址的类型

if(ip[0]>

0&

127)

此地址为合法的A类地址!

elseif(ip[0]>

127&

192)

printf("

此地址为合法的B类地址!

else

此地址为合法的C类地址!

//判断地址的类型

//以下程序实现ip地址点分十进制到二进制的转化

printf("

其IP地址的二进制表示为:

for(i=0;

i<

4;

i++)

for(j=7;

j>

=0;

j--)

{ipp[i][j]=ip[i]%2;

ip[i]=ip[i]/2;

}

//输出转化以后的ip地址

{for(j=0;

j<

8;

j++)

ipp[i][j]);

."

//一个字节输出一个“.”,此处多输出一个“.”

\n请输入子网掩码!

\n如:

255.224.0.0\n"

//将十进制子网掩码转化为二进制,存放到ym[4][8]中

ym[0],&

ym[1],&

ym[2],&

ym[3]);

for(i=0;

{ymm[i][j]=ym[i]%2;

ym[i]=ym[i]/2;

子网掩码的二进制表示为:

ymm[i][j]);

//实现ip地址与掩码逐位相与

子网号的二进制表示为:

{for(j=0;

{ymm[i][j]=ymm[i][j]&

ipp[i][j];

}

//将相与后的数用十进制输出

子网号的点分十进制表示为:

for(j=0;

ymm[i][j]=ymm[i][j]*pow((double)2,7-j);

ok[i]=ymm[i][j]+ok[i];

%d."

ok[i]);

四、运行结果

五、实习心的和体会

经过此次实习,对二、十进制之间的转换、IP地址的由来、作用以及分类有了进一步的了解,对IP地址与其掩码、子网号的关系有了较深刻的认识。

实习期间复习了以前学过的C语言受益匪浅。

在本次实习中遇到了很多困难也学到了很多东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识,对有关IP地址和子网有了进一步的了解,而且进一步巩固了程序的编写。

在程序设计过程中一直对字符操作不懂的透彻,对子网的输出一直不对,在经历了对课本的查阅以及上网查阅终于找到了解决问题的方法,提高了自己的动手能力和解决问题的能力。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说还是有点困难,对以前所学过的知识理解得不够深刻,掌握得不够牢固,这就造成了微程序理解的困难,比如说……通过这次课程设计之后,一定把以前所学过的知识重新温故。

六、参考文献

[1]计算机网路(第5版)谢希仁电子工业出版社

[2]WINDOWS网络编程黄超北京:

人民邮电出版社.

[3]刘文涛.网络安全开发包详解.北京:

电子工业出版社

[4]《计算机网络》课程设计指导书

实习成绩评定表

学生姓名

专业班级

设计题目

指导教师评语及意见:

指导教师评阅成绩:

指导教师签字:

年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

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

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