多人聊天系统.docx

上传人:b****6 文档编号:8676784 上传时间:2023-02-01 格式:DOCX 页数:38 大小:441.47KB
下载 相关 举报
多人聊天系统.docx_第1页
第1页 / 共38页
多人聊天系统.docx_第2页
第2页 / 共38页
多人聊天系统.docx_第3页
第3页 / 共38页
多人聊天系统.docx_第4页
第4页 / 共38页
多人聊天系统.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

多人聊天系统.docx

《多人聊天系统.docx》由会员分享,可在线阅读,更多相关《多人聊天系统.docx(38页珍藏版)》请在冰豆网上搜索。

多人聊天系统.docx

多人聊天系统

摘要

在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的ICQ、国内腾讯公司开发的OICQ。

随着网络聊天一类的聊天系统的发展日新月异,因此产生了制作一个类似QQ的网络聊天工具。

Java是一种程序设计语言,它具有简单的、完全面向对象以及与平台无关的结构,也具有可移植性、高性能和安全性,并提供了多线程的功能,而Java语言最大的成功之处在于它的平台无关性和具有强大的网络编程功能,基于Java网络编程的强大功能本人将用Java和JBuilder9编写一个聊天系统。

聊天工具大多数由客户端程序和服务器程序外加服务器端用于存放客户数据的数据库组成,本系统采用客户机/服务器架构模式。

通过Java提供的Soket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的而Java提供的多线程功能。

用多线程可完成多点对多点的聊天。

聊天系统完成后将可进行多人对多人的聊天,对用户进行添加、删除,对新用户的登录,发送消息、接受消息等等功能。

关键词:

网络通信,Socket,多人聊天系统,Jbuilder9

ABSTRACT

Asthenetworkbecomemoreandmoredeveloped,peoplebecomemoreandmoreleantothenetwork,andcannotleavewithoutit.Thiscausedthechatmaterialsbecomemorenumerous,astheoverseasICQsystem,theOICQsystemthatinventedbyTencentCo.,andsoon.SowecreateanetworkchatmediumjustliketheQQ.

Javaisaprogramminglanguagewiththesimpleconstructionwhichiscompletelyobject-oriented.Javaalsopossesstheportability,highperformanceandsecurity,andprovidethemulti-threadfunction.Thebestsuccessisitsanditsstrongnetworkprogrammingfunction.baseonthis,I’dliketouseJavaandJBuilder9towriteachatsystem.

Generallyspeaking,mostchatmediumconsisttheclientprogram,serverprogramandtheserverwhichisusetocontentthedatabase.Thissystemadoptclient/serverpatternandtheSocketclassprovidebyJavatocommunicatetheclientandserver.Becauseofchatismanytomany,themultithreadingfunctioncanimplementthemany-manychat.

Chatsystemisachieved,itcanpossessfunctionslikechatinamany-manyway,addanddeletetheuser,thenewuser’slogin,andsendingandreceivingmessage.

KEYWORDS:

networkcommunications,Socket,multi-userchatsystem,JBuilder9

目录

摘要I

ABSTRACTII

第一章绪论1

1.1课题的背景1

1.2课题的现状1

1.3本文的内容安排1

第二章相关设计知识的介绍3

2.1编程语言—JAVA3

2.1.1JAVA语言的介绍3

2.1.2在本次设计中JAVA的使用3

2.2开发环境—JBuilder94

2.2.1JBuilder9的介绍4

2.2.2在本次设计中JBuilder9的使用4

2.3系统运行的环境4

2.4系统的功能要求5

第三章 多人聊天系统服务器端的详细设计6

3.1系统设计原理6

3.2服务器端的设计思路7

3.3服务器端图形界面的实现8

3.4服务器端功能的实现9

3.4.1包的引入和变量的声明9

3.4.2启动模块的实现10

3.4.3信息传送模块的实现10

3.4.4异常处理模块和连接断开模块的实现13

3.5服务器端的测试15

第四章多人聊天系统客户机端的详细设计18

4.1客户机端的设计思路18

4.2客户机端图形界面的实现18

4.3客户机端功能的实现19

4.3.1包的引入和变量的声明19

4.3.2连接模块的实现19

4.3.3信息发送模块的实现21

4.3.4断开连接模块的实现23

4.4客户机端的测试23

第五章系统设计中的关键技术25

5.1C/S结构25

5.2Socket套接字的应用26

5.3多线程的应用28

5.4输入输出类的应用28

结论30

参考文献31

致谢32

附录33

第一章绪论

当今世界正处于信息时代,计算机和通信网络是这一时代所谓的“信息基础设施”。

在上世纪九十年代,网络化是计算机有重大技术发展的领域,TCP/IP协议在网络互联中体现出了其强大的生命力,以它为基础组建的Internet是目前国际上规模最大的计算机网络。

 目前全世界联网国家170多国,因特网网页8亿多页。

1999年,上网在线人数1.96亿,2003年达6.2亿。

Internet在我国的发展也是十分迅速地,1994年开始实现了TCP/IP的连接,在1996年,我国的网络用户为8-10万人,而这一数据在21世纪开始时已经增长到800万。

随着电信资费的下调、政府上网工程的逐步深化,电子商务的深入展开,我国 Internet也将迎来更美好的春天。

1.1课题的背景

在当今计算机网络的应用中,最主要的三个功能是:

数据通信,资源共享和分布处理。

在这个信息化的时代,计算机扮演了重要的角色。

计算机与通信的联系已经到了密不可分的地步。

计算机的发展促进了通信事业的发展,而通信的发展又扩大了计算机的应用范围。

二者互相促进,共同发展。

计算机技术与通信技术结合的产物有:

数据通信网,计算机通信网,分布式系统等。

在传统的通信方式中,比如电话方式或邮件方式,人们之间的通信存在着不能即时进行或受地域范围等方面的限制。

通过计算机网络进行的通信,多种通信方式如语音通信、图象通信、数据通信、视频通信都可以进行。

而从发展的眼光来看,计算机网络最终会发展到一个全球性的多媒体网络,多网合一和不同网络之间的融合趋势不断加强,计算机网络通信将会覆盖所有的网络业务。

1.2课题的现状

网络聊天系统作为计算机通信的重要部分,在现阶段发展的十分迅速。

出现了QQ,MSN,ICQ等一系列深受用户欢迎的聊天软件。

这些聊天软件的用户数量发展惊人,从2001年的2300万人迅速扩大至2003年的1亿8000万,并仍然呈高速增长趋势。

这些聊天软件的文字传输功能都是基于TCP/IP协议实现的,QQ所使用的网络协议主要是UDP协议,协议由报文头(T)+发送者(T)+接收者(T)+报文类型(T)+报文长度(L)+报文内容组成。

而MSN采用的是TCP协议,端口号是1863,如果这个端口不通,就自动转到80。

到目前为止,不同聊天软件服务系统是无法相互传递信息的,各个平台之间并没有统一的标准通信协议,各个服务商提供的服务相对独立,具有很强的排他性。

1.3本文的内容安排

本文的正文部分一共分为五个章节。

第一章为绪论。

主要介绍了课题的背景和现今的发展情况。

第二章是相关设计知识的介绍。

简单的介绍了本次设计所使用的语言和环境。

阐述了JAVA语言在网络编程上的优越性和JBuilder9在软件开发上的方便性。

对该系统所要求的软硬件环境和能完成哪些功能做了介绍。

第三章介绍了服务器端的详细设计。

包括其设计原理、设计思路、界面的设计和功能上的实现。

第四章介绍了客户机端的详细设计。

包括界设计思路、面的设计实现和功能上的实现。

第五章是对多人聊天系统设计上的一些关键性的技术进行详细的介绍。

第二章相关设计知识的介绍

在本章中将详细的介绍与本次设计相关的计算机知识。

首先介绍本次设计所使用的编程语言—JAVA以及在本次设计中JAVA语言的使用;然后对本次设计的开发环境—JBuilder9进行概括性的介绍以及在本次设计中它的使用具体有哪些;接下来介绍的是所设计的系统运行的环境;最后是描述一下系统的功能要求。

2.1编程语言—JAVA

2.1.1JAVA语言的介绍

JAVA语言诞生于20世纪90年代的初期,它的前身是SUNMicrosystems公司开发的一种用于智能化家电的语言OAK。

1994年,因OAK这个名字已被注册,SUN公司将其更名为JAVA。

并于1995年5月23日正式发布。

JAVA语言有以下特点:

简单性、面向对象、分布式处理、健壮性、结构中立、安全性、可移植性、解释性、高性能、多线程、动态性。

在这些特点中,可移植性犹为重要。

它是JAVA语言能成为网络应用首选语言的重要原因。

高级语言的翻译分为两种:

一种是编译性,如C、C++等。

其程序编译的结果是直接生成可执行文件。

这种可执行文件可以直接独立的在操作系统平台上运行,不再需要其他的系统软件;但同时,它对整个操作系统,乃至硬件的依赖性都较强,可移植性很差。

另一种类型的高级语言被称为解释型高级语言。

这种语言一般不需要编译这个过程,它的源程序由操作系统平台之上的一个被称为解释器的系统软件逐句地解释成操作系统可接受的指令,解释一句,运行一句,直至程序结束。

JAVA就属于这种解释型的高级语言,负责解释、运行JAVA程序的系统软件称为JAVA解释器。

与传统的解释型高级语言不同的是,JAVA的源程序不是直接交给解释器解释,而是先经过一个与编译型语言相似的编译过程,把JAVA源程序翻译成一种特定的二进制字节码文件,再把这个字节码文件交给JAVA解释器来解释执行。

在这种情况下,只要在不同软硬件平台的机器上配备合适这种机器的JAVA解释器,就可以把平台间的差异性隐藏起来。

操作系统经过JAVA解释器的包裹屏蔽了其软件方面的差异性,使之能够对所有的JAVA程序呈现解释器这样一个统一的界面,在这个界面之下由解释器包裹起来的完整的软硬件平台则被称为JAVA虚拟机。

计算机网络是由不同软硬件平台的机器连接组成的,当JAVA的字节码程序在网络上运行时,它接触到的是完全相同的解释器,从而使程序能够很好的在不同的平台上运行。

2.1.2在本次设计中JAVA的使用

本次设计要求采用的编程语言为JAVA,其中用到了java.awt,javax.swing,,java.io,java.lang,java.util等包。

由于需要进行界面设计,所以在编程中使用了java.awt和javax.swing这两个包。

使用包是因为在程序中要采用ServerSocket和Socket这两个类来进行网络连接。

由于本设计要实现聊天功能,即要能实现网络上信息的发送和接受;因此肯定要涉及到输入输出问题,所以要用到java.io这个包。

多人聊天系统必须要能够实现多个用户之间的通信,在JAVA中可以采用多线程来解决这个问题,因此要引用java.lang。

java.util包的使用是用到了其中的vector类。

启动的线程对象将被存放进其中。

本次设计中采用JAVA的类关键的有上面提到的ServerSocket、Socket还有线程类Thread以及输入输出类中的BufferedReader和PrintWriter等。

这些类的有关作用将在下文中一一提到,在这就不再赘述。

2.2开发环境—JBuilder9

2.2.1JBuilder9的介绍

JBuilder9是Borland公司出品的一种开发工具。

它是目前最好的JAVA开发工具之一,在协同管理、对J2EE和XML的支持等方面均走在其它产品的前面。

JBuilder包含了用户在JAVA集成环境开发环境中所需要的一切东西,它能够支持多种JAVA开发工具包版本。

2.2.2在本次设计中JBuilder9的使用

本次设计中需要进行界面设计,要用到面板、标签、按钮等组件。

这些组件在JBuilder9中可以直接点击后托拽生成,可以很方便的进行属性的设置。

还可以对这些组件进行动作的设置,如键盘动作设置、鼠标动作设置等。

本次设计最终需要生成一个可执行文件,在JBuilder9中完成程序编程后,可以打包生成.exe的可执行文件。

可执行文件可以脱离JBuilder环境,在有JRE的环境中运行。

2.3系统运行的环境

我们所设计的是一个能够在计算机网络中进行即时交流信息的通信软件,要在短时间内开发出来并且达到一定的要求,无论是硬件还是软件都要选择合适,要求如下:

开发设备应该完备;开发机器的性能必须稳定;操作系统的选择必须恬当;开发出的程序可以在尽可能多的平台上运行;要求运行机配置尽可能低档。

对此,我们选择的硬件环境和软件环境如下:

(1)硬件环境

开发该系统应尽可能采用高档的硬件配制,因此,在应用时应采用更好的配置。

处理器:

IntelCeleron1.7G或更高处理器。

内存:

512MB或更高。

由于JBuilder9对内存要求较高,所以建议至少采用512M内存。

硬盘空间:

20G以上。

网络:

局域网或广域网。

机器:

两台机器以上,一台为客户机,另一台机承担服务器的功能。

由于本次开发的硬件条件有限,只有一台机器可以使用,所以采用了在一台机器上模拟这种方式。

(2)软件环境

选择好的操作系统和好的编程语言是系统优劣的关键,我们要求系统在尽可能多的环境下运行,故选择WindowsXP平台。

对于一些已经过时的JAVA类中的方法,虽然仍可以使用,但一律不采用。

因JBuilder9具有友好的集成开发界面、面向对象的可视化开发模式、良好的数据库及多媒体应用支持以及高效的软件开发与程序运行,所以采用它来进行开发。

它的功能强大,开发效率很高,是网络环境下优秀的开发语言和工具。

操作系统:

WindowsXP。

开发工具:

JBuilder9。

网络环境:

能够连接Internet,可以及时获取必要信息。

2.4系统的功能要求

本次设计的设计目标是能够设计出一个高性能的,易于使用的,可以供多个用户进行即时信息通信的软件。

它应具有如下特征:

1.具有高性能,可同时处理多个连接请求。

2.对硬件要求低,适应范围广,运行稳定。

3.响应及时,能够迅速正确的进行通信。

4.具有一定的容错性能。

当客户机端连接到已启动的服务器端,客户机端用户进行登录时,客户机端的连接信息,如客户机的IP地址、用户名等信息内容通过连接进入服务器端,在服务器端显示出来。

客户机端进行聊天时,服务器端与客户机端进行数据交互,由服务器端转发通信的信息。

最终的软件产品应具有如下功能:

客户机端与服务器端功能独立,可独立运行在不同的计算机上或运行在同一台计算机上,具有最大的灵活性。

客户机端易于使用。

服务器端运行稳定,具有可管理性,并具有一定的容错性能。

能够支持中文用户名,服务器端与客户机端能够使用中文进行通信。

客户机端的功能:

(1)能够与服务器端进行连接和自动更新其他用户的名单。

(2)能够选择特定用户并与其交谈。

(3)能够在退出时将消息传给服务器端。

(4)能够阻止用户错误的信息发送。

如私聊时未选择对象或选择的对象为用户本身。

(5)能够手动输入服务器的IP地址

(6)信息的发送有快捷键功能

服务器端的功能:

(1)当有客户机端发出连接请求后,能够及时的建立连接。

记录客户的连接与退出情况。

(2)能够实现向所有用户作系统广播。

(3)能够正确的转发用户之间的私聊信息。

(4)能够检查提出连接要求的用户名,当不符合条件,比如用户名为空或用户名与已经登录的用户名重复时,发送提示用户名错误的信息给提出此次连接的客户机端,并断开与其的连接。

(5)可以强行断开某个用户的连接,同时也可以在断开后进行连接的恢复。

第三章 多人聊天系统服务器端的详细设计

本章的主要内容是介绍多人聊天系统的服务器端相关设计。

首先阐述设计思路;然后介绍了服务器端图形界面的实现;最后根据服务器端功能模块的划分,详细地介绍了服务器端各个功能的实现。

在对服务器端进行详细设计前先要对整个系统设计的原理进行介绍。

3.1系统设计原理

计算机网络是由一系列网络通信协议组成的,其中的核心协议是传输层的TCP/IP和UDP协议。

TCP是面向连接的,通信双方保持一条通路,好比目前的电话线。

它能提供大量数据的传输并确保传输无误,具有错误侦测、数据复原及数据重送等功能。

前面已经提到了,MSN用的就是TCP协议;UDP是无连接的,通信双方都不保持对方的状态,浏览器访问Internet时使用的HTTP协议就是基于UDP协议的。

UDP一般只适合处理少量数据,而且只提供单向数据传输。

TCP和UDP协议都非常复杂,尤其是TCP协议,为了保证网络传输的正确性和有效性,必须进行一系列复杂的纠错和排序等处理。

UDP和TCP都是基于TCP/IP体系结构的协议。

UDP是一种面向无连接、不可靠的协议,在传输前不需要建立连接。

远程主机接到UDP数据报后,不需要给出任何应答。

它传送的数据包是独立的,前后无任何顺序关系。

TCP则是提供面向连接、可靠的服务,在传送数据前两台主机需要进行“三次握手”。

在建立连接之后才能传送数据,TCP提供可靠服务,因此不可避免地增加了一些开销,如应答、流量控制、定时以及连接管理等。

虽然UDP协议在可靠性方面不如TCP协议,但效率却比TCP高,当每次传送的数据量很少而且网络质量较高时,UDP也同样可以达到实用的可靠性要求。

考虑到传输的可靠性,在本次设计中选择的是TCP协议。

两者的通信模型如图3-1与图3-2所示:

图3-1TCP通信协议

图3-2UDP通信协议

在Internet(广域网)和Intranet(局域网)上的通信程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。

因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序(Client和Server)。

在TCP/IP网络应用中,通信的两个进程相互作用的主要模式是客户机/服务器模式,即客户端向服务器发出请求,服务器接收到请求后提供相应的服务。

客户机/服务器模式的建立基于以下两点:

首先,建立网络的起因是网络中软、硬件资源、运算能力和信息不均等,需要共享,从而造就拥有众多资源的主机提供服务,资源较少的客户请求服务这一非对等作用。

其次,网间进程通信完全是异步的,相互通信的进程间既不存在父子关系,又不共享内存缓冲区,因此需要一种机制为希望通信的进程间建立一种联系,为二者的数据交换提供同步,这就是基于客户机/服务器模式的TCP/IP。

客户机/服务器模式在操作过程中采取的是主动请求方式:

首先服务器方要启动,并根据请求提供相应服务:

1.打开一通信通道并告知本地主机,它愿意在某一公认地址端口上(如http为80)接受客户请求。

2.等待客户请求到达该端口。

3.接收到重复服务请求,处理该请求并发送应答信号。

接收并发服务请求,要激活一新进程来处理这个客户请求。

新进程处理此客户请求,并不需要对其他请求做出应答。

服务完成后,关闭此新进程与客户的通信链路,并终止。

 

4.返回第二步,等待另外的客户请求。

5.关闭服务器。

客户方:

1.打开一通信通道,并连接到服务器所在主机的特定端口。

2.向服务器发出服务请求报文,等待并接收应答;继续提出请求。

3.请求结束后关闭通信通道并终止。

从上面的描述过程可知:

1.客户与服务器进程的作用是非对称的,因此编码不同。

2.服务进程一般是先于客户请求启动的。

只要系统运行,该进程一直存在,直到正常终止或者强迫终止。

3.2服务器端的设计思路

在前文中,已经详细的阐述多人聊天系统的工作原理以及开发它的相关技术和要求。

下面开始介绍它的具体设计。

首先将服务器端的设计流程描述出来,如下:

创建服务器端,初始化服务器端的套接字,并使其处在监听状态。

当用户登录后,在服务器端的列表中记录该用户的登录信息,并该用户添加到在线用户列表中。

同时将目前的在线用户列表发给该用户。

发送信息。

信息包括服务器端本身发给客户机端的信息和客户机端之间传递的信息。

后一种信息又分为两种:

广播信息和单播信息。

如是广播信息,服务器端需要将此信息发送给所有的用户。

如是单播信息,就只发送给指定的用户。

如果有用户退出的话,就将向所有的在线用户发送通知,同时在服务器端列表中记录该用户退出的信息,并从登录用户列表中将该用户删除。

当服务器端需要退出时,向所有用户发送系统关闭的消息,然后删除所有用户信息,关闭服务器端。

在C/S体系结构中,服务器的硬件条件要高于客户机,所以客户机只提出操作请求,相关的操作都由服务器来处理。

在本设计中也是按这种思路考虑的,客户机端之间进行通信时,不是一一建立单独的连接,而是先将信息传送给服务器端,由服务器端进行消息的转发处理。

3.3服务器端图形界面的实现

服务器端的图形界面从整体上分为三个部分。

一是显示已登录的用户相关信息部分;另一个是显示服务器相关信息和用户的登录与退出信息部分。

第三部分是服务器发送信息和显示当前已连接的用户数目部分。

在第一部分中,需要显示用户名、IP地址和该用户的连接情况。

相应的要设置三个标签组件。

显示登录用户相关情况的组件采用文本项列表组件,由于文本项列表组件具有可滚动功能,所以将其放在jScrollPane面板之上。

当显示的内容增多,就会自动生成滚动条,方便信息的显示。

在第二部分中,也需设置三个标签项用于显示系统消息,包括系统的状态、用户的登录退出等方面的信息。

显示这些信息的组件采用JTextArea,它是一个显示纯文本的多行区域。

由于也要考虑到显示内容的增多,所以JTextArea组件也放在jScrollPane面板之上,自动生成滚动条,方便信息的显示与查看。

在第三部分中,需要设置两个JTextField组件,它可以允许编辑单行文本。

这两个组件一个用于服务器端需要向客户机端发送系统信息时,信息内容的输入。

另一个用于目前已登录的用户数目的显示。

这一个JTextField组件属性中设置成不可编辑,无法手动修改数值。

另外还有三个按钮组件。

分别用于服务器端的启动、系统消息的发送和服务器端的退出。

实现后的服务器端的界面如图3-3

图3-3服务器端界面

3.4服务器端功能的实现

3.4.1包的引入和变量的声明

在服务器端,首先要启动一个服务器程序,该程序主要的作用就是对客户机端的程序进行监

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1