




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机网络课程设计报告题 目: ip地址合法性及子网判断 学生姓名: 向彦杰 学 号: 200817010129 专业班级: 计算机科学与技术09102班 同组姓名: 刘奎、蒋轶民 指导教师: 聂方彦 设计时间: 2012年上学期第18周 指导老师意见:评定成绩: 签名: 日期:2012年6月18日一、 课程设计的目的和意义计算机网络技术从20世纪60年代开始发展以来,已经形成了比较完善的体系。目前由于应用广泛,因此技术发展十分迅速,只是更新快,新的技术、新的术语不断出现。不要说是初次学习网络知识的学生,即使是多年从事网络技术研究与教学的专业人员也经常对技术的快速发展感到困惑。对于这样一个快速
2、发展的领域来说,最重要的是让学生能够学会处理网络问题的基本方法,掌握网络的最基本原理,使学生面对不断变化的技术,具有跟踪、学习的基础和能力。因此,在网络教材的编写和课程的教学中需要注意两个问题:第一是教学体系的建立和知识点的组织,第二是如何反映技术的发展。计算机网络课程是计算机科学与技术专业的重要专业课程之一,由于计算机网络是一门实践性较强的技术,课堂教学应该与实践环节紧密结合。面对快速发展的技术,我们必须从网络最基本的原理出发,总结提炼,让学生能够循序渐进地了解技术的发展过程,理解网络的基本思想。一旦学生能够自然地接受处理网络问题的基本方法,了解网络技术的基本知识,那么他就可能在前人研究成果
3、的基础上,具备接受新的知识和继续学习的能力,适应网络技术的快速发展。这也许是学好网络课程教学中“面包”和“猎枪”的关系,以“不变”应“万变”的基本方法。二、 课程设计的内容和要求本设计要求编写程序,判断一个ip地址是否合法,并判断该地址是否属于一个给定子网。从而考察读者是否对ip地址的概念及其子网划分有非常清楚的认识。在掌握ip地址表示方法及子网划分方法的基础上,按如下要求完成程序。1) 命令行格式:ip_test subnet/mask ip_addr其中,ip_test为程序名;subnet为子网号;mask是一个数值,代表子网掩码连续1的个数,ip_addr是要测试的ip地址。例如,要测
4、试的ip地址为0,子网号为,子网掩码为,则命令行为ip_test /24 0。(因为是24个1,所以用24表示。)2) 判断subnet和ip_addr的合法性。在判断ip地址合法性时要自行编写代码,不要使用任何inet函数。判断要考虑全面,比如以下ip地址均不合法:123.2.1123.23$.2.1123.2345.2.1.13)判断掩码的合法性。4)在ip地址合法的前提下,判断ip_addr是否属于子网subnet。5)
5、输出命令行中的ip是否合法,掩码是否合法(可适当给出不合法的原因)以及ip_addr是否属于子网subnet。三、 课程设计的相关技术1、 ip地址相关概念的回顾ip地址采用分层结构,由网络号和主机号两部分组成(如下图所示)网络号主机号ip地址长度为32位,用点分十进制表示,格式为x.x.x.x,每个x的值为0255(例如19),根据不同的取值范围,ip地址可以分为五类,ip地址中前五位用于标识ip地址的类别,具体的分类规则如下:a类地址的第一位为0;b类地址的前两位为10;c类地址的前三位为110;d类地址的前四位为1110;e类地址的前五位为11110。2、 特殊的
6、ip地址形式1) 直接广播地址a类、b类与c类ip地址中主机号全1的地址为直接广播地址,用来使路由器将一个分组以广播方式发送给特定网络上的所有主机。直接广播地址只能作为分组中的目的地址,物理网络采用的是点-点传输方式。分组广播需要通过软件来实现。网络号主机号全12) 受限广播地址网络号与主机号的32位全为1的地址为受限广播地址,用来将一个分组以广播方式发送给本网的所有主机。本网的所有主机将接受该分组,路由器则阻挡该分组通过。全13)“这个网络上这台主机”地址全04)“这个网络上特定主机”地址主机或路由器向本网络上的某个特定的主机发送分组,网络号部分为全0,主机号为确定的值。这样的分组被限制在本
7、网络的内部。网络号全0主机号5)回送地址回送地址用于网络软件测试和本地进程间通信。tcp/ip协议规定网络号为127的分组不能出现现在任何网络上,主机和路由器不能为该地址广播任何寻址信息。127任意值(通常取1)3、子网的划分(略)四、 课程设计过程此次课程设计是在windows xp平台下开发的win32应用程序,可以兼容windows xp以后所有的操作系统。开发的平台是vs2005wtl。程序运行的结果如下图所示: 程序制作步骤_1、新建一个wtl应用程序,选择非模态对话框,如下图:2、创建工程后向界面设计器中添加一个ip地址控件。ip地址控件可以有效地防止ip地址误输,能够起到事半功倍
8、的作用。如下图:2、创建工程后向maindlg.h和maindlg.cpp中添加有关代码,使其完成模型层和控制层的功能。3、这里新建一个函数,来判断ip地址的属性。该函数的原型是:void ipcheck( dword ipaddress, dword netmask, cstring& output );作用是将ip地址和netmask地址输入,输出字符串output。4、将模型层、视图层和控制层联合测试,避免程序异常。五、课程设计小结这次课程设计我对ip地址有了更为深入的认识,ip地址原来是有分类编址的,后面由于ip地址利用率低,出现了三层ip分址、无分类ip地址的分类方法,一直到最近ip
9、v6的出现以及普及。ip作为网际层的重要知识点,具有承上启下的作用。这对我们深入学习计算机网络具有深刻的意义。六、参考文献1、计算机网络课程设计m 吴功宜、胡小英、张仁、何云、王宁 编著 机械工业出版社附:程序源代码/ ipcheck.cpp 测试ip是否合适的文件/ 2012年月日:58:23 最后编辑#include stdafx.h#include #include #ifdef unicode/ 使用unicode字符集typedef std:wstring tstring;/ 使用宽字符串typedef std:wstringstream tsstream;/ 使用宽字符串流#els
10、etypedef std:string tstring;/ 使用多字节字符串typedef std:stringstream tsstream;/ 使用多字节字符串流#endiftstring getipstring( dword ip )tsstream output;output 24 ) text( . ) 16 ) text( . ) 8 ) text( . ) 24 = 127 )output += text( 此ip地址是用来做回环测试用的。 );return;/ 获取网络号dword netid = ipaddress & netmask;tsstream showstr;sho
11、wstr text( 将ip地址“ ) getipstring( ipaddress ) text( ”n与子网掩码“ ) getipstring( netmask ) text( ”n相与后得到的是n网络号“ ) getipstring( netid ) text( ” );output += showstr.str( ).c_str( );/ maindlg.h : cmaindlg类的接口。/#pragma onceclass cmaindlg : public cdialogimpl, public cupdateui,public cmessagefilter, public cid
12、lehandler,public cwindataexchangepublic:enum idd = idd_maindlg ;virtual bool pretranslatemessage(msg* pmsg);virtual bool onidle();begin_update_ui_map(cmaindlg)end_update_ui_map()begin_msg_map(cmaindlg)message_handler(wm_initdialog, oninitdialog)message_handler(wm_destroy, ondestroy)command_id_handle
13、r(id_app_about, onappabout)command_id_handler(idok, onok)command_id_handler(idcancel, oncancel)end_msg_map()begin_ddx_map( cmaindlg )ddx_control_handle( idc_ipaddress, m_ipaddress )ddx_control_handle( idc_netmask, m_netmask )end_ddx_map( )/ 句柄的原型(如果需要请去掉注释):/lresult messagehandler(uint /*umsg*/, wpa
14、ram /*wparam*/, lparam /*lparam*/, bool& /*bhandled*/)/lresult commandhandler(word /*wnotifycode*/, word /*wid*/, hwnd /*hwndctl*/, bool& /*bhandled*/)/lresult notifyhandler(int /*idctrl*/, lpnmhdr /*pnmh*/, bool& /*bhandled*/)lresult oninitdialog(uint /*umsg*/, wparam /*wparam*/, lparam /*lparam*/,
15、 bool& /*bhandled*/);lresult ondestroy(uint /*umsg*/, wparam /*wparam*/, lparam /*lparam*/, bool& /*bhandled*/);lresult onappabout(word /*wnotifycode*/, word /*wid*/, hwnd /*hwndctl*/, bool& /*bhandled*/);lresult onok(word /*wnotifycode*/, word wid, hwnd /*hwndctl*/, bool& /*bhandled*/);lresult onca
16、ncel(word /*wnotifycode*/, word wid, hwnd /*hwndctl*/, bool& /*bhandled*/);void closedialog(int nval);private:cipaddressctrlm_ipaddress;/ ip地址cipaddressctrlm_netmask;/ 子网掩码cstaticm_output;/ 输出;/ maindlg.cpp : implementation of the cmaindlg class/#include stdafx.h#include resource.h#include aboutdlg.
17、h#include maindlg.hextern void ipcheck( dword ipaddress, dword netmask, cstring& output );/ 检测ip地址的函数bool cmaindlg:pretranslatemessage(msg* pmsg)return cwindow:isdialogmessage(pmsg);bool cmaindlg:onidle( )uiupdatechildwindows( );return false;lresult cmaindlg:oninitdialog(uint /*umsg*/, wparam /*wpar
18、am*/, lparam /*lparam*/, bool& /*bhandled*/)/ 将对话框居中显示centerwindow( );/ 设置对话框的图标hicon hicon = (hicon):loadimage(_module.getresourceinstance(), makeintresource(idr_mainframe), image_icon, :getsystemmetrics(sm_cxicon), :getsystemmetrics(sm_cyicon), lr_defaultcolor);seticon(hicon, true);hicon hiconsmal
19、l = (hicon):loadimage(_module.getresourceinstance(), makeintresource(idr_mainframe), image_icon, :getsystemmetrics(sm_cxsmicon), :getsystemmetrics(sm_cysmicon), lr_defaultcolor);seticon(hiconsmall, false);/ 从消息过滤器和空闲更新中注册对象cmessageloop* ploop = _module.getmessageloop();atlassert(ploop != null);ploop
20、-addmessagefilter(this);ploop-addidlehandler(this);uiaddchildwindowcontainer(m_hwnd);/ 初始化ip地址控件dodataexchange( false );m_ipaddress.setaddress( _ip_address_( 172, 16, 91, 93 ) );m_netmask.setaddress( _ip_address_( 255, 255, 0, 0 ) );/ 初始化输出框m_output.attach( m_hwnd );m_output.setdlgitemtext( idc_outp
21、ut, text( 请按下确定键提交数据。 ) );return true;lresult cmaindlg:ondestroy(uint /*umsg*/, wparam /*wparam*/, lparam /*lparam*/, bool& /*bhandled*/)/ 取消注册消息过滤器和空闲更新cmessageloop* ploop = _module.getmessageloop();atlassert(ploop != null);ploop-removemessagefilter(this);ploop-removeidlehandler(this);return 0;lres
22、ult cmaindlg:onappabout(word /*wnotifycode*/, word /*wid*/, hwnd /*hwndctl*/, bool& /*bhandled*/)caboutdlg dlg;dlg.domodal();return 0;lresult cmaindlg:onok(word /*wnotifycode*/, word wid, hwnd /*hwndctl*/, bool& /*bhandled*/)/ todo:添加代码使其有效cstring output;dword ip, netmask;m_ipaddress.getaddress( &ip
23、 );m_netmask.getaddress( &netmask );ipcheck( ip, netmask, output );m_output.setdlgitemtext( idc_output, output );return 0;lresult cmaindlg:oncancel(word /*wnotifycode*/, word wid, hwnd /*hwndctl*/, bool& /*bhandled*/)closedialog(wid);return 0;void cmaindlg:closedialog(int nval)destroywindow();:postq
24、uitmessage(nval);/ stdafx.h:包含标准系统包含的文件或者项目指定的常用但不常修改的头文件。/#pragma once/ 改变这些值以适应不同的版本#define winver0x0500#define _win32_winnt0x0501#define _win32_ie0x0501#define _richedit_ver0x0200#include #include extern cappmodule _module;#include #include #include #include #include / wtl实用类#include / wtl消息增强#in
25、clude / 支持对话框数据交换/ ip的宏#define _ip_address_( n1, n2, n3, n4 )( n1 24 | n2 16 | n3 8 | n4 )#if defined _m_ix86 #pragma comment(linker, /manifestdependency:type=win32 name=microsoft.windows.common-controls version= processorarchitecture=x86 publickeytoken=6595b64144ccf1df language=*)#elif defin
26、ed _m_ia64 #pragma comment(linker, /manifestdependency:type=win32 name=microsoft.windows.common-controls version= processorarchitecture=ia64 publickeytoken=6595b64144ccf1df language=*)#elif defined _m_x64 #pragma comment(linker, /manifestdependency:type=win32 name=microsoft.windows.common-con
27、trols version= processorarchitecture=amd64 publickeytoken=6595b64144ccf1df language=*)#else #pragma comment(linker, /manifestdependency:type=win32 name=microsoft.windows.common-controls version= processorarchitecture=* publickeytoken=6595b64144ccf1df language=*)#endif- 薅袂肅荿蚈肈羁莈螀袁艿莇蒀蚄膅莆
28、薂衿肁蒅蚄蚂羇蒄莄袇袃蒄蒆蚀节蒃蚈羆膈蒂螁螈肄蒁蒀羄羀蒀薃螇艿葿蚅羂膅薈螇螅肁薈蒇羁羇膄虿螃羃膃螂聿芁膂蒁袂膇膁薄肇肃膁蚆袀罿膀螈蚃芈艿蒈袈膄芈薀蚁肀芇螂袆肆芆蒂蝿羂芅薄羅芀芅蚇螈膆芄蝿羃肂芃葿螆羈莂薁羁袄莁蚃螄膃莀莃羀腿荿薅袂肅荿蚈肈羁莈螀袁艿莇蒀蚄膅莆薂衿肁蒅蚄蚂羇蒄莄袇袃蒄蒆蚀节蒃蚈羆膈蒂螁螈肄蒁蒀羄羀蒀薃螇艿葿蚅羂膅薈螇螅肁薈蒇羁羇膄虿螃羃膃螂聿芁膂蒁袂膇膁薄肇肃膁蚆袀罿膀螈蚃芈艿蒈袈膄芈薀蚁肀芇螂袆肆芆蒂蝿羂芅薄羅芀芅蚇螈膆芄蝿羃肂芃葿螆羈莂薁羁袄莁蚃螄膃莀莃羀腿荿薅袂肅荿蚈肈羁莈螀袁艿莇蒀蚄膅莆薂衿肁蒅蚄蚂羇蒄莄袇袃蒄蒆蚀节蒃蚈羆膈蒂螁螈肄蒁蒀羄羀蒀薃螇艿葿蚅羂膅薈螇螅肁薈蒇羁羇膄
29、虿螃羃膃螂聿芁膂蒁袂膇膁薄肇肃膁蚆袀罿膀螈蚃芈艿蒈袈膄芈薀蚁肀芇螂袆肆芆蒂蝿羂芅薄羅芀芅蚇螈膆芄蝿羃肂芃葿螆羈莂薁羁袄莁蚃螄膃莀莃羀腿荿薅袂肅荿蚈肈羁莈螀袁艿莇蒀蚄膅莆薂衿肁蒅蚄蚂羇蒄莄袇袃蒄蒆蚀节蒃蚈羆膈蒂螁螈肄蒁蒀羄羀蒀薃螇艿葿蚅羂膅薈螇螅肁薈蒇羁羇膄虿螃羃膃螂聿芁膂蒁袂膇膁薄肇肃膁蚆袀罿膀螈蚃芈艿蒈袈膄芈薀蚁肀芇螂袆肆芆蒂蝿羂芅薄羅芀芅蚇螈膆芄蝿羃肂芃葿螆羈莂薁羁袄莁蚃螄膃莀莃羀腿荿薅袂肅荿蚈肈羁莈螀袁艿莇蒀蚄膅莆薂衿肁蒅蚄蚂羇蒄莄袇袃蒄蒆蚀节蒃蚈羆膈蒂螁螈肄蒁蒀羄羀蒀薃螇艿葿蚅羂膅薈螇螅肁薈蒇羁羇膄虿螃羃膃螂聿芁膂蒁袂膇膁薄肇肃膁蚆袀罿膀螈蚃芈艿蒈袈膄芈薀蚁肀芇螂袆肆芆蒂蝿羂芅薄羅芀芅
30、蚇螈膆芄蝿羃肂芃葿螆羈莂薁羁袄莁蚃螄膃莀莃羀腿荿薅袂肅荿蚈肈羁莈螀袁艿莇蒀蚄膅莆薂衿肁蒅蚄蚂羇蒄莄袇袃蒄蒆蚀节蒃蚈羆膈蒂螁螈肄蒁蒀羄羀蒀薃螇艿葿蚅羂膅薈螇螅肁薈蒇羁羇膄虿螃羃膃螂聿芁膂蒁袂膇膁薄肇肃膁蚆袀罿膀螈蚃芈艿蒈袈膄芈薀蚁肀芇螂袆肆芆蒂蝿羂芅薄羅芀芅蚇螈膆芄蝿羃肂芃葿螆羈莂薁羁袄莁蚃螄膃莀莃羀腿荿薅袂肅荿蚈肈羁莈螀袁艿莇蒀蚄膅莆薂衿肁蒅蚄蚂羇蒄莄袇袃蒄蒆蚀节蒃蚈羆膈蒂螁螈肄蒁蒀羄羀蒀薃螇艿葿蚅羂膅薈螇螅肁薈蒇羁羇膄虿螃羃膃螂聿芁膂蒁袂膇膁薄肇肃膁蚆袀罿膀螈蚃芈艿蒈袈膄芈薀蚁肀芇螂袆肆芆蒂蝿羂芅薄羅芀芅蚇螈膆芄蝿羃肂芃葿螆羈莂薁羁袄莁蚃螄膃莀莃羀腿荿薅袂肅荿蚈肈羁莈螀袁艿莇蒀蚄膅莆薂衿肁蒅蚄蚂羇蒄莄袇袃蒄蒆蚀节蒃蚈羆膈蒂螁螈肄蒁蒀羄羀蒀薃螇艿葿蚅羂膅薈螇螅肁薈蒇羁羇膄虿螃羃膃螂聿芁膂蒁袂膇膁薄肇肃膁蚆袀罿膀螈蚃芈艿蒈袈膄芈薀蚁肀芇螂袆肆芆蒂蝿羂芅薄羅芀芅蚇
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025春季学期国家开放大学专科《幼儿园课程基础》一平台在线形考形成性考核作业试题及答案
- 医院医务人员礼仪培训体系构建与实践
- 【培训课件】高级生产管理与优化策略研讨会
- 民政救助协议书
- 兼职人员劳务合同
- 浴池消毒协议书
- 木材订购协议书
- 游艇包船协议书
- 委托代理合同补充协议
- 医疗质量核心制度培训
- 上海市市辖区(2024年-2025年小学五年级语文)人教版期末考试(下学期)试卷及答案
- 2024年-2025年公路养护工理论知识考试题及答案
- 建筑施工安全检查标准JGJ59-2011
- 动物健康数据挖掘
- 水泵采购投标方案(技术方案)
- 《客舱设备与服务》课件-3.客舱服务
- 2023学校幼儿园怀旧“六一儿童节”(时光不老追忆童年)主题游园活动策划案-47P
- Carrousel2000氧化沟系统设计说明书
- (高清版)DZT 0347-2020 矿山闭坑地质报告编写规范
- 部编版语文二年级下册第四单元整体教学设计教案
- 药学实践教学设计
评论
0/150
提交评论