《计算机网络课程设计报告--简单的即时通信软件.docx》由会员分享,可在线阅读,更多相关《计算机网络课程设计报告--简单的即时通信软件.docx(31页珍藏版)》请在第壹文秘上搜索。
1、课程设计报告20142015学年第一学期课程名称计算机网络设计题目简单的即时通信软件本文介绍了即时通信系统的程序设计和功能实现。该系统主要是基于TCP与UDP的C/S模式通信系统。该项目由两个主程序组成:服务器端应用程序,客户机端应用程序。服务器启动监听进程,监听连接申请,对于来申请的客户机,或者说申请的ID,服务器进程将会对进行判别和分类,满足服务器要求就进行连接,从而实现客户端的通信。该系统界面友好,操作简单,适应性强,扩展性强。关键字:即时通信;服务器;客户端;目录3第1章引言41.1 概述41.2 研究背景41.3 软件简介41.4 软件开发方法4第2章软件分析52.1 可行性分析52
2、.2 功能分析5第3章软件设计与实现73.1 项目系统模型73.2 开发及运行环境73.3 软件结构设计73.4 软件功能设计83.5 服务器端应用程序103.5.1 服务器端应用程序的创建流程103.5.2 实现界面设计103.5.3 定义类设计113.5.4 实现类中的函数133.5.5 实现界面功能按钮203.5.6 测试213.6 客户端应用程序213.6.1 界面设计213.6.2 控件的编辑与绑定223.6.3 定义类设计和实现类设计中的函数233.6.4 实现界面功能按钮233.6.5 测试23第4章软件结构254.1 服务器端结构254.2 客户端结构25第5章软件评价27结束
3、语28致谢29附录参考文献30第1章引言1.1 概述即时通信(InstantMessaging)是基于互联网协议的应用程序,它能够使应用不同类型设备的用户一对一进行通信。IM最传统的形式是聊天,聊天即双方互相传送信息。与电子邮件服务相比,聊天服务更具有实时性,更便于人们相互沟通和交流信息。而套接字是通信双方一种相互约定的通信方式和规则,在TCP/IP通信中一般使用套接字的相关函数接口来完成通信过程。区分不同应用程序进程间的网络通信和连接,主要有三个通信的目的IP地址,使用的传输层协议,使用的端口号。通过这三种参数就可以识别客户端双方的身份进行可以放心的通信。本系统在此基础上设计的一个简单的通信
4、系统。1-2研究背景随着互联网的发展,聊天服务已成为必不可少的互联网服务之一,它方便远距离人们的信息的交流,简单易操作,又保证的即时性,使人们更能享受互联网带来的好处。典型的IM是样工作的:当好友列表中的某人在任何时候登录上线并试图通过用户怕计算机联系用户时,IM系统会发一个消息提醒用户,然后用户能与对方建立一个聊天会话界面并键入消息文字进得交流。自1999年,腾讯公司自主开发了基于Internet即时通信网络工具一腾讯即时通信(QQ),其合理的设计,良好的易用性,强大的功能,稳定高效的系统运行,赢得了用户的青睐。与电子邮件服务相比,聊天服务具有实时性,人们更便于相互沟通,交流思想和信息。所以
5、即时通信系统已成为人们研究的热点。1.3 软件简介该软件是基于客户机/服务器(Client/Server)模式的聊天室系统,此设计采取监听对话模型。基本思路是:服务器启动监听进程,监听连接申请,对于来申请的客户机,或者是申请的ID,服务器进程将会对其判别与分类,满足服务器要求进行连接。1.4 软件开发方法本软件是利用ViSUalC6.O这个集成开发环境设计并实现一个基于C/S模型的聊天室。1 .该软件是使用MFC库开发基于对话框形式的网络聊天室系统。MFC库可以开发内容和功能都非常丰富的WindoWS程序,但万变不离其中,都是围绕着MFC(即继承MFC类进行开发)库实现的。MFC类家族很庞大,
6、但有几个是程序运行必备的类:CobjeCt类:该类完成动态空间的分配与回收。CCmdTarget类:CCmdTarget类主要负责将系统事件(消息)和窗口事件(消息)发送给响应这些事件的对象,完成消息的发送,等待和派遣工作,实现应用程序的对象之间的协调运行。CWinAPP类:CWinAPP类是应用程序的主线程类,它是从CWinThread类派生而来。CDoCUnIent类:CDOCUment类是文档类,包含了应用程序在运行期间所用到的数据。CWnd类:CWnd类是一个通用窗口类,用来提供WindOWS中所有通用特性。CVieW类:CVieW类是用于让用户通过窗口来访问文档以用负责文档内容的显示
7、。CFrameWnd类:是CWnd的派生,并实现了标准的框架应用程序。CDialog类:CDiaIOg类用来控制对话框窗口,并选择从CDialog类继承。2 .VC+提供了多种对网络编程的支持,主要有SoCket支持,WinInet支持,MAPlT和ISAPl支持等。WindowsSocketsAPI是Win32APl的一个子集,是在TCP/IP网络环境里也是Internet上进行开发的最常用的API。第2章软件分析2.1 可行性分析即时通信(InstantMessaging),是近年来逐渐兴起的网络应用之一,面向大众娱乐聊天休闲的即时软件层出不穷,如QQ,MSN,Yahoo,Messenge
8、r等等。它通过通信系统建立网络虚拟环境,商务通讯及商务合作的新媒体,可以弥补传统通讯形式的不足,尤其是电子邮件及语音的不足,为用户提供了有效的沟通手段。即时通信系统是随着互联网的出现而兴起的新型通信手段。最早,即时通信系统对人们来说只是一个网络寻找朋友的聊天的工具,但是,随着互联网使用的逐渐丰富和完善,一个综合的桌面通信平台出现了,该平台已经成为一个地地道道的通信工具,并可能成为继电话,电子邮件之后的第三种现代通信方式。在各个领域,即时通信系统作为一种低成本的,集成多种沟通方式(文字,语音,视频,文件传输,文件共享)软件已经成为如今天通用的流行通信方式。如所即时通信系统的研究与开发已成为现今的
9、热点。2.2 功能分析即时通信的主要功能如下:令服务器的建立:这个是实现聊天的关键,只有建立了聊天服务器,客户才能连接到上面从而进行聊天过程的实现,服务器建立之后牌监听状态,等待客户机的申请连接。令选择连接方式:在服务器建立的时候,要选择是何种连接方式,TCP还是UDP,选择不同,将会受用不同的消息处理机制。同时将确定连接地址和端口号。令启动客户端:开始尝试对服务器进行连接操作,这里面注意之处就是客户机要选择和服务器一致的连接方式,填入正确的连接地址和端口号。令启动对话:成功建立连接后,开始进行对话操作,对就不同的方面,出现的消息也是不的,这样做的好处就是能够屏蔽他人的信息,而只要求显示对自己
10、有用的信息,一来可以节省程序设计的耗时,二来可以保护聊天室中的隐私。令多用户的信息交互:当建立一个连接后,其他的客户机也是可以再连接到上面,进行多用户的聊天。令退出聊天系统:聊天结束之后,客户机断开连接就可以退出聊天室,信息不再交互,如是服务器关闭,连接在上面的所有客户机将会断开。第3章软件设计与实现3.1项目系统模型该项目由两个程序组成:令服务器端应用程序:主要是负责信息转发和存储,以及通信端口和通信用户的管理。令客户机端应用程序:主要是负责提供给非专业技术人员用户,用户通过客户机可以和其他客户机或者服务器进行通信。本项目的系统模型如图1.1所示。图1.1系统模型3.2 开发及运行环境本系统
11、运行时需要以下条件硬件平台: CPU:Pentium41.8GHZ 内存:256MB以上软件平台: 操作系统:WindowsXP/Windows2000Win7 开发工具包:ViSUalC+6.03.3 软件结构设计该软件是基于客户机/服务器(CIiem/Server)模式的聊天室系统,此设计采取监听对话模型。基本思路是:服务器启动监听进程,监听连接申请,对于来申-7-请的客户机,或者是申请的ID,服务器进程将会对其判别与分类,满足服务器要求进行连接。连接后,客户机端用户就可以进行通信了。系统框架图如图1.2所示。服务器连功交始启动监听迸程接成 ,信息 互开I身份 确认图1.2聊天室的C/S模
12、型设计框架3.4 软件功能设计实现基于对话框的网络聊天通信则需要实现以下几个功能:1)建立通信框架首先利用MFCAPPWiZard生成系统框架:在ViSUaIC+6.0的IDE的环境下选择FileNewProjectMFCAppWizard(exe)ProjectNameOKNEXTWindowSocketsIFinish按钮,选择OK按钮,应用程序的框架就将自动创建。之后增加控件对象,布置程序的主对话框,通信框架就建立成功了。2)网络连接类CsocketComm该类的定义和实现,完成了C/S模型的连接处理,也就是所谓的“信道通信”部分。由于本系统集成TCP和UDP的聊天程序,所以在系统中有所
13、区别.主要实现的接口功能包括:创建服务器端SoCkeI,获取主机IP,获取服务器端口号,获取本地地址,获取主机名字,数据接收,发送,以及关闭通信等。3)创建服务器SerVer首先需要创建SOCket,在函数CreateSoCket()中创建SoCket,由于传输中有TCP和UDP两种方式,函数CreateSoCket()中根据传递过来的参数nType的值对这两种不同的传输方式进行选择,该函数不管TCP还是UDP连接,都是通用的。当nType=SOCK_DGRAM时为UDP;当nType=SOCK_STREAM时为TCPo有所区别的是,在UDP中如时要进行广播,需要进行互斥操作,防止同一时间不同
14、的UDP广播;在TCP连接模式中,没有UDP传输模式中的广播模式,但是在TCP连接需要保存SOCket,保证连接的存在和数据到达的准确性。服务器的主要功能包括启动服务器,更新服务器、关闭服务器、发送与接收信息,以及设定相关选项。4)创建客户机CIient客户机的创建和服务器的创建同等重要,都是通信的实体。客户端通过函数ConnectTO来进行连接申请,首先判断Socket是否已连接,如果创建就返回false,否则就创建Socketo创建好Socket之后和本地地址绑定,再获取远程服务器的地址和端口号,确定好服务器,就调用ConneCt()将客户机连接到服务器。5) UDP中多用户聊天的实现首先
15、,服务器创建UDP类型的套接字并绑定服务端口,并使得该套接字处于未连接状态;接下来就循环读取来自客户机的请求,将其地址保存起来,写入地址表m.AddListo服务器端接收客户机发送过来的数据时,先判断缓冲区是否够大,足够大刚写入缓冲区;向客户机发送数据时,通过广播的形式,先锁定地址列表LoCkLiSt(),然后通过for循环语句,对地址列表中的每个地址通过函数Sendto()发送数据到客户机。期间,若某客户机与服务器断开连接,刚从地址列表中删除其地址信息,之后将不再发送数据。6)退出系统当客户端选择退出系统时,则断开与服务器的连接,不开转发其信息。3.5 服务器端应用程序3.5.1 服务器端应用程序的创建流程创建流程如下:3.5.2 实现界面设计实现界面设计不仅仅是设计一个界面,还需要对界面的控件名称和控件绑定的变量进行定义。(1)界面设计服务器的对话框界面如图1.3所示。图1.3服务器端应用程序界面设计(2)编辑控件与变量绑定设置界面中的3个编辑框的ID和与之绑定的变量,如表1.4所示。表1.4编辑框控件和变量的绑定编辑控件的内容ID类型变量名服务