网络程序设计课程设计指导书-2011
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《网络程序设计》课程设计指导书
计算机科学与工程学院
网络工程专业
2011年10月
一、课程设计目的与任务
1.目的
(1)加深对计算机网络的基本概念和原理,以及网络编程接口Socket概念
及编程原理的理解;
(2)提高学生网络应用与编程、分析与解决实际问题的能力,为大型网络
编程打下坚实基础;
(3)通过撰写课程设计报告,锻炼学生的逻辑组织和语言表达能力;
(4)培养学生理论运用于实践的综合应用和设计创新能力。
通过本次课程设计,使学生进一步理解、领会C++语言和网络编程技术,把所学的知识运用到具体的程序设计当中去,编写一个接近实际的应用程序。
本课程设计是一门综合性实验。
通过本次课程设计,掌握VC++应用程序设计;加深对TCP/IP协议的理解;掌握C/S编程模式;掌握Socket机制、传输控制协议;用户数据报协议;掌握网络抓包的原理;掌握网络编程应用程序分析、设计、编程和调试的整个过程。
2.任务
(1)设计完成与网络应用相关题目的网络应用软件;
(2)调试运行之后,要求边演示边解释设计的思想、过程及采用的方法;
(3)完成课程设计报告。
二、课程设计的基本要求
1.熟练掌握网络的基本概念和原理;
2.熟练掌握网络编程接口Socket概念及编程原理;
3.掌握基于TCP/IP的Internet编程技术;
4.掌握各种软件开发工具的使用过程及方法。
三、设备及工具
硬件:微机70台以上,P4以上处理器,256M以上内存、Ethernet网卡,交换机
软件:Windows2000/xp操作系统,VC6.0编程环境。
四、选题及要求
1、简单的聊天室程序
本题是一个简单的聊天室程序,采用客户/服务器模式,分为客户端程序和服务器端程序。由于服务器只能支持一个客户,实际上是一个点对点通信的程序。
客户端程序和服务器程序通过网络交换聊天字符串内容,并在窗口的列表框中显示。
本实例程序的技术要点是:
●如何从CasyncSocket类派生出自己的WinSock类。
●理解WinSock类与应用程序框架的关系。
●重点学习流式套接字对象的使用。
●处理网络事件的方法。
2、FTP客户端程序
程序能实现基本的FTP客户端功能,能登陆FTP服务器,显示登陆客户目录下的文件和目录名,能从该目录中选择下载服务器的文件,也能向服务器上传文件。
该程序是基于对话框的MFC程序,程序界面布置要点:
●三个文本编辑框,分别用于输入FTP服务器域名、登陆用户名和登陆口
令。
●一个列表框,用来显示FTP服务器当前目录的内容,并允许客户从中选
择文件下载。
●四个命令按钮分别执行查询、上传、下载和退出的功能。
用户执行程序的流程是:
1)进行各种操作之前,应首先输入服务器域名、登陆用户名和口令。
2)如果要进行查询,可以点击“查询”按钮,调用OnQuery函数。该函数获得用户当前输入的服务器名、登陆用户名和口令等信息,清除列表框的内容;然后创建Internet会话类对象,进行服务器的登陆,试图建立与指定FTP服务器的连接;如果连接成功,就创建ftpFileFind文件检索类对象,查找服务器上当前目录的任意文件,找到了第一个文件后,继续找其他的文件,并将找到的文件或目录名显示在列表框中。所有文件找到后,结束查询,并依次删除文件查询对象、FTP连接对象和Internet会话对象,结束会话。
3)此时,可以从服务器下载文件。从列表框中选择一个文件,会产生LBN_SELCHANGE事件,自动调用相应的OnSelchangeListFile函数,禁用用来输入的文本框控件,禁用查询和上传按钮,激活下载按钮。此时,用户可以点击“下载”按钮,产生BN_CLICKED事件,自动调用OnDownLoad函数,调用DownLoad函数,下载该文件。下载完毕,禁用下载按钮,激活查询和上传按钮,激活用来输入的文本框控件。而DownLoad函数重新创建Internet会话,建立FTP 连接,下载文件后,将会话对象和连接对象清除。
4)如果要向FTP服务器上传文件,点击“上传”按钮,产生BN_CLICKED 事件,调用OnUpLoad函数,该函数获得当前输入的服务器名、登陆用户名和口令,禁用用于输入的文本框控件,禁用查询按钮,禁用用于输入的文本框控件,弹出小对话框,获得待上传的本地机文件路径和文件名,调用UpLoad函数上传文件。上传完毕,激活查询按钮,激活用于输入的文本和编辑控件。UpLoad函数也重新创建Internet会话,建立FTP连接,上传文件后,然后清除会话对象和连接对象。
可见,此程序的查询、上传和下载功能基本是独立的。每次都要创建会话、建立连接,执行操作,然后清除对象。这时是为了简单清楚起见而这样做的。
此程序的主要技术要点是:
如何创建一个Internet会话,即创建CinternetSession对象;如何建立与FTP 服务器的连接,即创建CftpConnection对象;如果连接成功,如何获得当前登陆的目录下的文件和目录名称,即检索一个目录下的文件,并显示文件信息;如何下载文件、上传文件以及关闭连接。
3、W eb浏览器设计
使用ChtmlView类来实现一个应用程序,使之具有Web浏览器的功能,包括浏览网页、前进、后退、返回主页和搜索功能。通过实例,重点掌握利用ChtmlView类开发Web客户端程序的方法。程序界面和完成的功能可以参考Windows Iexplorer6.0。
4、电子邮件接收程序
通过这个实例,读者可以进一步了解POP3的有关原理和内容。
这个实例不太复杂,用户可以利用某个网站的pop3电子邮件接收服务器来接收你在该网站的电子邮件里的信件。首先填入pop3服务器地址、邮箱用户名和口令,并决定是否要删除邮箱里的邮件;然后点击“连接”按钮,程序会与服务器建立TCP连接,然后发送用户名和口令,经过验证,进入pop3会话。通过命令交互,将邮箱中的所有邮件取回。在此过程中,用一个多文本列表框来显示全部的会话信息。信件全部下载完毕后,用一个组合列表框来显示所有信件的标题字段。用户可以从中选择一封信件,查看或者存储。然后可以断开连接。
本课题只介绍了接收邮件,提取信头标题字段的有关内容,能正确显示符合RFC822规范的邮件。
程序实现的技术要点是:
(1)、运用Windows的消息驱动机制
除了由MFC创建的应用程序类和对话框类以外,程序从CasyncSocket类派生了自己的套接字类,并为它添加了OnConnect( )、OnClose( )和OnReceive( )三个事件处理函数。程序的会话过程几乎完全是由FD_READ消息驱动的。建立连接后,服务器会返回消息,接到命令后,服务器也会返回信息。当信息到达客户端套接字的接收缓冲区时,会触发FD_READ消息,并自动执行OnReceive( )函数。该函数接收服务器发来的消息,进行分析处理,然后再发送相应的命令。这命令又会引来服务器的响应,又会触发客户端的FD_READ消息。如此周而复始,完成POP会话的全过程。
(2)、通过状态转换来控制会话命令的发布顺序
程序定义了一个枚举类型STATE,并为套接字类定义了一个STATE类型的变量state用来表示POP会话的实际状态。容易看出,枚举的成员符号是客户端向POP3服务器发送的命令。
Typedef enum
{
FIRST = 0, USER, PASS, STAT, LIST, RETR, ENDRETR, DELE, GOON } STATE;
STATE state;
当用户点击“连接”按钮与服务器建立TCP连接时,将state置为初值FIRST;然后,每当收到服务器的信息,一方面根据会话的当前状态作响应的分析处理,