【《聊天系统的开发(论文)》12000字】.docx
聊天系统的开发与研究目录摘要11 .结论22 .系统需求分析22.1. 功能需求22.2. 可靠性需求33 .系统可行性分析33.1. .技术可行性43.2. .经济可行性53.3. 操作可行性54 .多点聊天通信原理54.1. 1套接字通信64.2. SoTimeout()得到服务器超时时间84.3. 数据报通信84.4. 无连接的客户/服务器程序工作流程104.5. 多线程编程115 .宿体设计B1. 1系统通信模型与拓扑结构设计135. 2功能设计146. 3界面设计166 .详细设计186.1. 服务器端详细设计186.2. 客户端详细设计20结论20参考文献22摘要随着计算机网络技术的飞速发展,人们之间的沟通手段日益增多,传统的通讯手段在速度、可靠性等方面都不能满足用户的需求,因此,即时通讯技术已逐渐成为一种新兴的技术。而即时通讯技术对于现代企业来说也具有重要的意义,它为各企业开辟了一个新的网络应用空间。自其诞生之日起,即时互动;由于它具有较低的价格优势,使得它越来越受人们的青睐,并逐渐融入到人们的日常生活中。本文本着“学以致用”的原则,针对广大网民的通信需要,研制了一套多点聊天系统。本系统操作简便,界面友好,功能专一性。本文详细地阐述了系统的设计流程,从原理、总体设计等几个方面进行了较为详尽的探讨。关键词:聊天系统;网络通信;网络编程1绪论随着网络技术的飞速发展,人们的沟通手段也日益多样化,传统的沟通手段已不能完全满足人们的需要,通过网络进行即时的沟通,已成为现代社会中最主要的沟通手段。与此同时,即时通讯技术对于现代公司来说也具有重要的意义,可以使人们更快地进行沟通;共享数据,因此可以更有效地提高工作效率。即时通讯为各大公司开辟了一个新的网络应用空间。自其诞生之日起,即时互动;由于它具有较低的价格优势,使得它越来越受人们的青睬,并逐渐融入到人们的日常生活中。目前,许多公司已经意识到,即时通讯可以提供非常高的生产率,可以通过即时通讯的应用,提升企业的合作与反应速度。所以,电脑间的即时通讯、文件等通信手段,已成为一种必然趋势。于是,QQ、UC等聊天工具应运而生,但是,QQ.UC等工具,虽然方便实用,但是,它的娱乐功能实在是太多了,而且,还有许多有趣的功能。目前,仅有少数几种可以完成一种即时通信的软件,因此,本文提出了一种专门的多台电脑间的即时通信软件,使多台电脑间的数据交换变得更加快捷。该系统是在C/S模型基础上开发的,使用JaVa语言编写的Q所有的使用者都会在服务器上传送讯息,这也是目前大部分聊天系统使用的方式。该系统真正实现了多点聊天,能够在多个节点之间进行快速的信息传输。同时,其小巧、功能单一、界面简洁、易于上手,用户只需通过简单阅读服务器和客户端的说明文件就可以完全理解其用法。是一个非常好的网上聊天工具,尤其是在局域网上。2 .系统需求分析对软件的需要有深刻的了解,是软件工作者取得成功的先决条件。系统需求分析要解决的问题包括:用户需要哪种系统,以及系统要怎么做。只有把目标锁定,才能让自己的工作更加高效和准确。2.1 .功能需求观天室软件共分为服务器端和客户端两部分,服务器端程序主要负责侦听客户端发来的消息,客户端需登陆到服务器才可以实现正常聊天功能。1)服务器端的主要功能如下 在特定的端口上进行侦听,等待客户段连接 用户可以配制服务器的侦听端口,默认端口为8888 向已经连接到服务端的用户发送系统消息 统计在线人数 当停止服务时,断开所有用户连接2)客户端的主要功能如下 连接到已经开启聊天服务的服务端 用户可以配制要连接服务器端的IP地址与端口号 用户可以配制连接后显示的用户名 当服务器端开启后,用户可以随时登陆和取消 用户可以向所有人或者某一个人发送消息22可靠性需求多点聊天系统是一种需要传输数据的应用软件。在传输层,有两种传输协议,即UDP和TCPoUDP是一种非连通性的传送协议,而且没有任何手段可以确保传送的可靠性,即无法保证传送的品质。TCP则是一种以连接为导向的协议,它是以每个字节为单位编码,由接收方来确定;为了确保传输数据的可靠性,采用了发送端超时重传、流量控制和拥塞控制等方法。为了确保多点聊天系统的通讯可靠性,需要采用可靠的通讯协议。在设计的时候,我们选用了TCP协议。TCP协议在将数据传送到其它应用之前,两个处理过程要进行三次“握手”,以确保随后的数据的可靠传送。TCP“连接”与TDM.FDM等不同,并不是一种虚拟电路,其连接状态完全位于两个终端系统。同时,TCP协议的故障检测,设定定时器;为了确保TCP数据段的正确、完整、有序的传输,需要在数据段的头上设置顺号、应答号等。3 .系统可行性分析本章从技术、经济、操作三个角度分析了该体系的可行性。决定该系统的价值。在现代软件工程中,可行性分析是必不可少的。对问题的可行性进行细致而细致的可行性分析,可以减少大量的无谓的浪费,保证在最短的时间里,以最少的成本来决定问题能否得到解决。3 .1技术可行性在仔细地分析了系统的要求后,结合了不同的计算机高级语言的特点和适用范围,最后决定了该系统的性能。JamesGOSIing是由SunMiCrOSyStem公司的JamesGOSIing开发的一种纯面向对象JaVa语言。SUn公司的广告语是“互联网即电脑”,JaVa把一切都从台式机变成了以Web为基础的计算,这是为实现这一目标而设立的。有了Java,我们就能比较容易地写出一个结构化的网页程式。以下是关于JaVa语言的技术可行性的简单介绍。JaVa很容易;面向对象;健壮,安全,解释,平台独立,多线程,动态计算机语言。JaVa的开发环境也分很多种,其中J2MEJ2SEJ2EEJ2EEJ2SEJ2EEJ2SEJ2SE,Java2,广泛应用于工作站和PC机,被誉为“Internet上的世界语言”。这些都为我们的系统开发提供了强有力的平台。JaVa在因特网上有着独特的优势,这也是我们最大的魅力所在。JaVa最初被设计用于集成控制家电的语言,所以它必须简洁。JaVa抛弃了C+中的某些功能,比如指针,结构和内存管理,这些都是很容易导致程序出错的。Java为我们开发JaVa程序提供了大量的库类。JaVa专门负责在编译和运行时检查程式的bugoJaVa是一种更强大的类型,它的类型检查要比C+更严格,它可以帮助我们发现很多早期的开发bugoJaVa本身就是内存管理的一部分,它还提供了一个垃圾收集机制,可以很好地解决C+中最棘手的内存泄漏问题。JaVa的安全有两个保障。一方面,将C+中的指针、释放等C+的特性从JaVa中移除,从而防止了非法的内存操作;另一方面,JaVa代码的安全性是由JaVa安全体系结构保证的。JaVa是一种网络语言,它的源代码被编译为一种中性的中间文件。只要有JaVa运行这个系统的计算机就可以执行这样的中间代码。JaVa的源代码被编译为一种在JaVa虚拟机中运行的计算机独立的字节码。JaVa语言的一个重要特点是,它能够在语言层次上实现多线程编程,这使多线程程序的编写变得非常容易。JVM在处理多个线程的同时执行时能够有效地处理资源共享问题。JaVa的动态特性是它的面向对象设计的一个延伸。它可以让程式在执行时动态加载所需的类别。JaVa编译器没有把对实例变数和成员国式的参考汇编成数字参考,而是把符号参考资讯储存在字节码中,并传送到解释程序,然后在执行完动态连结类别之后,把符号参考资讯转化成数字偏移。因此,在更新类别中的变数和方法时,并不会对所存程式码造成影响。32经济可行性在JaVa诞生之初,S1m和他的聪明的开发战略为JaVa的发展提供了有利的环境,可以说,JaVa和开源之间有着千丝万缕的联系。在JaVa的世界里,开源和非营利组织已经被开发到了极限,很多优秀的工具都是由这些公司开发出来的。例如JUnit;CaC1Us;此外,还有很多其他的工具,如Tomcat、StrutsJBOSs、Ec1ipse、ANT、Xerces.Hibernate,Axis、ASPeetJ等。在JaVa的世界里,没有好的东西是不存在的,因为它们的品质堪比商业软件,而且许多商用IDE都将它们整合在一起。“开放源码,并不只是Java,它还包含了开发工具和架构,相对便宜的开发费用。”这样,就可以将JaVa用作一个开发平台。33操作可行性JaVa技术不像C;C+;Visua1Basic,De1phi,JaVa技术是专门用于应用的,而非JavaoJaVa技术在各种设备中得到了广泛的应用,提供了各种各样的工具,信息和有趣的游戏。JaVa为我们提供了一个直观的图形APIt我们可以根据这个AP1开发出一个很好的GUI,从而为用户提供一个便利的运行环境。同时,JaVa拥有大量的类库资源,可以让我们在进行简单的继承的过程中,完成很多复杂的功能。JaVa优秀的移植性极大地增强了软件的复用性,使用JaVa开发的软件无需修改就能在Java虚拟机上进行移植,真正做到了“一次编译,一次运行“。4 .多点聊天通信原理本文主要从多点聊天系统的基础上,详细阐述了多点聊天系统的基本原理,并对与之相关的套接字、数据报通信、多线程技术作了详细的论述。4.1 .套接字通信套接字是网络通讯中最基础的运行单位,也被称为“端口”,一般用于用户与服务者之间的连接。网络中的两个程序之间采用一个双向通讯连接进行数据交换,在前链路两端各设置一个Socket,并通过读取/写入SoCket来完成网络通讯。套接字是一种标准的网络通讯,它就象房间里的一个插头,不管是电灯、计算机,只要把220V-50HZ的AC电压插入插口就可以了。插座有三种类型:(1)流套接字这是TCP/IP群组中最常见的一种接口,TCPzIP群组中的TCP协议采用这种接,它能为用户(虚拟线路)提供导向(虚拟线路);传送顺序一致、包长度不受限制、不重复的网路分组传送。(2)数据报套接字在TCP/IP群组中,UDP采用这种介面,是一种无连结的业务,以独立的分组方式传送网路,最大信封长度为32KB,传送时不能保证顺序性、可靠性和重复性,一般应用在单一消息传送或可靠性不高的情况下。(3)原始数据报套接字提供了直接存取网路底层通讯协定,通常不会为一般使用者使用,其主要目的是发展新的通讯协定及撷取协定中隐藏的功能。所有套接字通讯程式的基础架构相同,主要是建立套接字;开启与SOCke1相连的输入和输出流;根据特定的协议,读写Socket,关闭Socket,这四个步骤就可以实现普通的SoCke1通讯。net包中有两个类,即SOCket和ServerSocket,用于代表双向连接的客户机和ServerSocket,其结构如下:Socket(InetAddressaddress,intport)Socket(InetAddressaddress,intport,Boo1eanstream)Socket(Stringhost,intport)Socket(Stringhost,intport,Boo1eanstream)ServerSocket(intport)ServerSocket(intport,intcount)在这里,地址为IP地址,用于双向链接,主机名称为主机,端口为端口,stream用于指定流接口或数据包接口,计数为服务器所能支持的最大数量。TCPZIP把端口号分成两个部分,少数用来作为预留端口,端号小于256,以全局的方式分配到业务处理。所以每个标准的服务器都有一个统一的端口,甚至是在不同的计算机上,端口号也是一样的。一般的保留端口号是:80端口提供WWW业务;23个端口提供Te1net业务;