- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                网络协议编程课程设计汇
                    
网络协议编程
课程设计
指导教师:              
学生班级:     网络10802	    
学生姓名:            
学    号:       
班内序号:         21          
课设日期:2011/7/5~2011/7/12
         目   录
一、课程设计目的与任务	3
二、设计任务及要求	3
1、RAW模式的SOCKET编程	3
2、具体内容	3
三、需求分析	4
四、总体设计(流程图)	5
五、详细设计与实现	6
六、实现结果及结果分析	11
七、使用说明	14
八、课设小结	14
一、课程设计目的与任务
网络协议编程课程设计是学习《TCP/IP协议分析》课程后的一个重要实践环节,是对学生进行的一次较为全面的网络协议分析应用程序设计训练。其基本目的是:
(1)培养学生理论联系实际的设计思想,训练综合运用所学的基础理论知识,结合生产实际分析和解决网络应用中基本问题的能力,从而使基础理论知识得到巩固和加深。
(2)训练学生运用软件工程的原理、方法和工具完整地设计并开发一个网络应用系统,历练软件工程常规设计过程和基本方法。为将来的实际应用开发打好基础。
(3)深层次掌握TCP/IP协议的基本原理与数据格式。
(4)熟悉并掌握网络通信协议编程  PING ΧΧΧ.ΧΧΧ.ΧΧΧ.ΧΧΧ
其中ΧΧΧ为目的主机的IP地址,不要求支持域名,对是否带有开关变量也不做要求。不带开关变量时,要求返回4次响应。
返回信息显示在窗体上:
  REPLY FROM ΧΧΧ.ΧΧΧ.ΧΧΧ.ΧΧΧ
或
  REQUEST TimeOut (无法PING通的情况)  
(3)实验步骤和注意事项
1、 熟悉IP以及ICMP协议的工作机制
2、 熟悉RAW模式的SOCKET编程
3、 编写PING的实现程序
4、 编译环境中需要包括SOCKET库 WS2_32.lib
5、 在模拟实现环境下调试并运行自己编写的PING程序
三、需求分析
在带界面的PING程序中最基本的需要是用以输入IP的文本框,显示reply的文本框和几个基本按钮。这个要事先知道在PING ΧΧΧ.ΧΧΧ.ΧΧΧ.ΧΧΧ后的reply要返回哪些内容,上面已经要求返回4次响应,每次相应的reply就以我们平时在doc下ping的结果为模板REPLY FROM ΧΧΧ.ΧΧΧ.ΧΧΧ.ΧΧΧ:Bytes=XX TTL=XXX Time=XXms.虽然要求ΧΧΧ为目的主机的IP地址,不要求支持域名但域名的转换还是蛮简单的固定代码就加上去了。也添加了两个清空的按钮以便于用户使用。
四、总体设计(流程图)
五、详细设计与实现
1.用vc新建一个MFC对话框工程,从控件中拖入静态文本右击属性修改id和标题,类似的再拖入其他的编辑框和按钮,在显示reply的编辑框的属性中要勾选只读,这样既可以无法修改reply又可以节省复制粘贴的代码。
在界面大致完成的时候界面如下:
                     图一:完成界面结构
因为默认的是白色所以在Initlnstance()中添加SetDialogBkColor (RGB (128, 184, 223), RGB ( 0, 0 , 150 ) );使得界面的背景色变为蓝色。
                    图二:改变背景
BOOL CPingApp::InitInstance()
{
	SetDialogBkColor (RGB (128, 184, 223), RGB ( 0, 0 , 150 ) );
觉得通用的.ico图片不是我想要的便换了一张。
在此时运行得到的界面效果是:
                  图三:没有任何的功能的蓝色界面效果
2.接下来就是在.cpp文件中添加相应的代码以实现老师和自己的要求。
首先是定义ip和icmp 的首部,这些代码是固定的所以直接复制粘贴了。
typedef struct ip_hdr //定义IP首部
{ 
	unsigned char h_verlen;        //4位首部长度,4位IP版本号 
	unsigned char tos;             //8位服务类型TOS 
	unsigned short total_len;      //16位总长度(字节) 
	unsigned short ident;          //16位标识 
	unsigned short frag_and_flags;//3位标志位 
	unsigned char ttl;             //8位生存时间 TTL 
	unsigned char proto;           //8位协议 (TCP, 
                
原创力文档
                        

文档评论(0)