《多人聊天系统的设计与实现毕业设计论文》由会员分享,可在线阅读,更多相关《多人聊天系统的设计与实现毕业设计论文(22页珍藏版)》请在金锄头文库上搜索。
1、多人聊天系统的设计与实现简单聊天程序的设计与实现摘 要本课程设计主要是设计并实现一个简单的聊天程序,该聊天程序能够支持多人聊 天,聊天的内容可以仅仅支持文本信息,聊天程序包括服务器程序和客户端程序。在课 程设计中系统的开发平台为 Eclipse程序运行平台为 Windows XP。关键词:聊天程序;服务器;客户端;Eclipse1引言本课程设计主要是简单聊天程序的设计,使用MSN或QQ,分析聊天程序的功能需求及工作原理。该聊天程序能够支持多人聊天,聊天的内容可以仅仅支持文本信息, 聊天程序包括服务器程序和客户端程序。1.1课程设计目的该课程设计的目的主要是通过对简单聊天程序的设计及QQ原理的分
2、析,了解聊天程序的功能需求及工作原理;熟悉 TCP/IP协议以及套节字编程原理;熟悉 Eclipse编程 环境及Socket/ServerSocke编程方法。1.2课程设计要求(1)按要求编写课程设计报告书,能正确阐述设计结果。(2)通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作精神。(3)学会文献检索的基本方法和综合运用文献的能力。(4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。1.3课程设计平台课程设计中系统的开发平台为 Eclipse,程序运行平台为 Windows XP2需求分析2.1功能需求分析(1 )用户端之间的信息发送,本程序需要实现的最基本的功能。用
3、户在界面上可 以将自己需要发送的信息填入相应的对话框中,点击发送按钮后,可以将信息正常的发 送给相应的其它用户,这个过程中的客户端与客户端之间使用点对点发送信息,预计利 用TCP/IP协议中的UDP协议,在本程序中共需要3个端口,此功能预计使用3号端 口。(2)在线用户主机IP列表的维护。在用户发送信息之前,需要选择相应的目的地 端IP,这也就需要客户端拥有在线用户主机的 IP地址,这个在线主机列表的维护是需 要客户端定时自动向服务器端发送信息,服务器端收集并维护在线用户列表,再发送回 客户端。需要在客户端和服务器端都使用定时器来完成此功能。此功能预计使用1、2号端口。(3 )在C/S模式中,
4、服务器与客户端是相互依赖的。在客户端启用以后,需要查 看服务器端是否在线,服务器在线才能正常使用客户端,如果服务器不在线,则在检测 一定次数以后自动退出客户端程序。在使用过程中,客户端在指定时间内未向服务器端 发送信息的,服务器认为客户端下线;客户端在一定时间内未收到服务器端信息的,认 为服务器已经下线,则提示用户并建议退出,在用户一定时间后没有退出的则自动关闭 客户端程序。2.2数据需求分析(1)客户端之间聊天信息。在控件上显示时格式化,更易于用户的查看自己发送 或接收到的信息。(2 )在线用户聊天信息。服务器端存放在适当的空间中,在发送给客户端时,对 信息列表进行格式化,便于客户端提取信息
5、。(3)客户端向服务器端发送的确认在线信息。包括客户端刚刚启动时的初始化信 息和在使用过程中的确认在线信息。(4 )其它程序内部可能需要设计的数据结构体。2.3性能需求分析(1 )可靠性高,能在由于系统问题或其它原因产生错误后,作出相对应处理,比 如网络初始化失败、服务器不在线等,可以提示用户安全退出本程序,在出现不可知的 错误以后,可以尽量安全的退出程序。在程序的设计过程中,要求能尽可能多的设想到 用户使用过程中可能发生的事件,并能在判断事件后做出相应的处理,使程序具有较高 的容错性能0( 2 )宜操作性,程序简单易懂,容易上手使用。设计界面是,简化界面的复杂性,模拟QQ等现有即时通讯工具的
6、界面,使用户能很容易看懂并使用。(3 )开发文档易理解,保证以后自己二次开发或他人接手开发时,能够清晰的理 解整个系统的设计思路和实现细节。(4) 模块化设计此软件的功能,不同的模块实现不同的功能,使得软件易于以后 的维护与扩展,在以后可以更好的完善本软件的功能,更方便于在工作中的应用。2.4运行需求分析(1 )用户界面程序较小,启动速度快。可在网络中使用,有注册功能,需进行用户登录。启动后 的应用界面要清爽,设计要简单明了,要具有较高的易用性。(2 )故障处理在遇到可预知的故障与情况时,能提示用户并自动退出;在遇到不可预知的故障时 能安全退出。3设计原理3.1聊天程序的工作原理QQ聊天程序采
7、用的是C/S通信模式,即客户/服务模式,它把一个应用划分成功能 不同的两个部分,分别在不同的计算机上运行,其中一个为服务端程序,用来响应和提 供固定的服务,一个为客户端程序,用来向服务端提出请求和要求某种服务。在数量关 系上,通常有一对一的(即一个服务端程序和一个客户端程序之间通信),也有一对多的(即一个服务端程序和多个客户端程序之间通信),也有多对多的(即多个服务端程 序和多个客户端程序之间通信)。所谓服务端程序、客户端程序也是相对的概念,有时 在一个程序中既有服务端又有客户端的功能。QQ聊天程序分成了两个程序,一个安装在腾讯公司的服务器上,我们称之为服务端程序,一个安装在QQ用户的计算机上
8、,我们称之为客户端程序。在许多介绍网络通信编程的书籍中有关网络聊天的例子,当一个 客户要与另一个客户聊天时,第一个客户先把聊天数据发送给服务器,然后服务器再把 聊天数据转发给第二个客户,服务器好像一个中转站,这在客户数量比较少时,服务器 还能承受,在客户数量比较多时,服务器肯定要瘫痪。何况客户之间还要传送文件、语 音聊天、视频聊天等等,为了减少服务器的压力,各客户端之间需要直接通信。(1)在服务端和客户端之间(一对多)用于客户端程序登录,验证用户密码,获取其它在线好友信息等等。(2)在客户端和客户端之间(多对多)用于在线好友间直接通信聊天。此时每个客户端程序上既有实现服务端功能的部 分,又有实
9、现客户端功能的部分,前者用于接收聊天数据,后者用于发送聊天数据。在用C/S模式进行通信时,作为客户端在请求与服务端连接时需要知道服务端的IP地址,腾讯公司的服务器具有固定的公网地址,这没有问题。但是在客户端和客户端之 间通信时,每个用户的IP地址都是ISP所给的临时地址,无法固定,那么某个用户要 与另一个用户连接时,怎么知道对方的IP地址呢?当一个用户连接到In ternet后,获得 了一个临时的公网地址,当登录到 QQ时,QQ服务端会获得该上线用户的IP地址,然 后告知其他要与该上线用户聊天的用户,其他用户就可以连接该用户与之直接通信了。在Win 32平台上,对于众多的基层网络协议, Win
10、 sock是访问它们的首选接口。女口 果想从头开发一个网络通信应用程序,TCP/IP就是首选协议之一。为了保证可靠的数据 传输,宜选择TCP协议3。3.2 TCP/IP 协议的简写,中文译名In ternet最基本的IP协议和传输层的TCP/IP (Transmission Control Protocol/Internet Protocol)为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是 协议、In ternet国际互联网络的基础,简单地说,就是由网络层的TCP协议组成的网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议IP层接收由更低层(网络接口层例如以太网设备驱动程
11、序) 发来的数据包,并把该 数据包发送到更高层-TCP或UDPg;相反,IP层也把从TCP或 UDPg接收来的数据 包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按 顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它 的主机的地址(目的地址)。高层的TCP和UDPK务在接收数据包时,通常假设包中的源地址是有效的。也 可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的 主机发送来的。IP确认包含一个选项,叫作IP source routing ,可以用来指定一条源 地址和目的地址之间的直接路径。 对于一些TCP
12、和UDP的服务来说,使用了该选项的IP 包好像是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项 是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵 。如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向上传送到TCP 层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用 程序轮流将信息送回TCP层,TCP层便将它
13、们向下传送到IP层,设备驱动程序和物理介 质,最后到接收方。面向连接的服务(例如 Tel net、FTP rlogin、X Win dows和SMTP需要高度的可 靠性,所以它们使用了 TCP DNS在某些情况下使用TCP(发送和接收域名数据库),但 使用UDP专送有关单个主机的信息。3.3套接字编程原理在TCP/IP网络中两个进程间的相互作用的主机模式是客户机/服务器模式(Clie nt/Server model) 。该模式的建立基于以下两点:1、非对等作用;2、通信完全 是异步的。客户机/服务器模式在操作过程中采取的是主动请示方式:首先服务器方要先启动,并根据请示提供相应服务:(过程如下)
14、(1) 打开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客户请求。(2) 等待客户请求到达该端口。(3) 接收到重复服务请求,处理该请求并发送应答信号。(4) 返回第二步,等待另一客户请求(5) 关闭服务器。客户方:(1) 打开一通信通道,并连接到服务器所在主机的特定端口。(2) 向服务器发送服务请求报文,等待并接收应答;继续提出请求(3) 请求结束后关闭通信通道并终止。所谓的客户客户端/服务器。是一种能够在基于网络环境的分布处理过程中,使用基于连接的网络通信模型。该通信模型首先在客户机和服务器之间定义一套通信协议,并 创建一个Socket类,利用这个类来建立一条可靠的链接;然后,客
15、户端/服务器再在这条连接上可靠地传输数据。客户端发出请求,服务器发出请求,服务器监听来自客户机 的请求,并为客户端提供相应服务。利用Socket类,我们可以轻松地实现网路客户端程序的编写,Socket类的一些常用 的方法汇总如下:getLocalAddress()读取套接字对象的本地地址getLocalPort()读取套接字所使用的本地端口号getl nputStream()得到一个输入流。getOutputStream()得到一个输出流。通常情况下,客户端只要能够顺序地处理服务器程序的响应就可以了,因此客户端 程序通常不用使用多线程3.4 Eclipse开发环境Eclipse最初是由IBM公司开发的替代商业软件 Visual Age for Java的下一代IDE开 发环境,是著名的跨平台的自由集成开发环境。 最初主要用来Java语言开发,但是目前 亦有人通过插件使其作为其他计算机语言比如 C+和Python的开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得 Eclipse拥有其他功能 相对固定的IDE软件很难具有的灵活性。许多软件开发商以 Eclipse为框架开发自己的 IDE。Eclipse采用的技术是IBM公司开发的(SWT),这是一种基于Java的窗口组件, 类似Java本身提供的AWT和Swi