基于JAVA的网络聊天室

目  录

摘要……………………………………………………………………………………………………1

关键词…………………………………………………………………………………………………1

引言……………………………………………………………………………………………………1

1 系统开发的意义及需求分析………………………………………………………………………1

1.1课题来源…………………………………………………………………………………………1

1.2需求分析…………………………………………………………………………………………1

2.1 JAVA的网络功能与编程…………………………………………………………………………1

2.1.1 JAVA概述………………………………………………………………………………………1

2.2 JAVA语言在网络上的应用………………………………………………………………………1

2.3 IP/TCP协议常识 …………………………………………………………………………………3

2.3.1 TCP/IP协议的特点……………………………………………………………………………3

2.3.2 TCP/IP协议数据的传输过程…………………………………………………………………3

2.3.3端口号…………………………………………………………………………………………3

2.4 Socket的简介……………………………………………………………………………………3

2.4.1 Socket程序的工作过程………………………………………………………………………4

2.4.2三次握手协议…………………………………………………………………………………4

3系统开发和设计方案……………………………………………………………………………… 5

3.1开发环境及工具…………………………………………………………………………………5

3.2系统总体设计要点………………………………………………………………………………5

3.2.1实现思想………………………………………………………………………………………5

3.2.3多用户实时工作原理图………………………………………………………………………6

3.3系统功能模块划分及设计原理…………………………………………………………………7

4系统实现与最终效果………………………………………………………………………………10

4.1系统工作的过程…………………………………………………………………………………10

4.2 系统使用方法……………………………………………………………………………………10

4.3 各功能模块运行效果……………………………………………………………………………10

4.4拓展功能…………………………………………………………………………………………13

4.5模块测试…………………………………………………………………………………………14

5总结…………………………………………………………………………………………………14

5.1毕业设计总结与展望……………………………………………………………………………14

5.2经验和感想………………………………………………………………………………………14

致谢……………………………………………………………………………………………………15

参考文献………………………………………………………………………………………………15

网络聊天室

摘要在网络飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。互联网上存在大量的信息所以信息交换显得尤为重要。人们一直在寻找一种方便、低廉的交流信息的工具,因此网上聊天便成为人们的首选。本论文通过JAVA的Socket实现了一个局域网的聊天室——于JAVA的聊天室的设计与实现本聊天室服务器包括显示在线用户、日志管理、聊天信息管理、发送系统信息等功能。客户端包括登录、注册、公聊、私聊传送文本文件等功能。

关键词因特网;聊天室;JAVA;套接字

引言: 随着互联网逐步普及,人们的生活和工作也越来越离不开信息网络的支持,将会有越来越多的人利用网上资源,享受不断发展和完善的网络服务,以此来提高工作效率和水平。随着我国经济发展和网络的普及,网络技术也越来越多地被应用于日常工作之中。在程序设计领域,面向对象的编程技术正在逐步代替面向过程的程序设计技术,成为计算机应用设计开发的主流,尤其在网络技术开发中,面向对象的Java语言编程和相关的JAVA技术正在以前所未有的速度发展。网上购物、网上银行、远程教学、网络聊天、网络游戏等都开始使用JAVA技术。而且JAVA使平台无关性的思想成为现实,独立的JAVA程序可以被编译为与平台无关的字节码,这种字节码可以运行在任何拥有JAVA解释器的机器上。 真正降低了企业成品和程序员的负担。对于人与人之间通过网络的沟通和交流,聊天室是人们最常见、最直接的交流的方式。本聊天系统以聊天交流为主,为广大用户提供一个借助网络进行人际交往的平台,也是网络与现实最贴近的实用型应用。本文所介绍的网络聊天系统是基于开放的JAVA应用程序开发设计的,其主要特性是能动态、实时的完成信息的传递,且具有高效的交互性,有效的处理客户请求且具有脱离数据库技术方法, 易于维护和更新。

1系统开发的意义及需求分析

1.1课题来源

根据当前网络的需求,网络聊天越来越受到各种网民所青睐。因此开发网络聊天是相当有必要,而且在网站内增加聊天功能,它不仅可以提高网站的访问量,同时可以留着访客,更重要的是让访客透过聊天室实时的互相交流。而本人也学习过JAVA语言,对网络编程也较有兴趣,为了更好的考验自己对JAVA语言的掌握程度,本人就决定以《基于JAVA的网络聊天室》为毕业设计,希望通过这一次能进一步提高本人的网络开发编程的能力。

1.2需求分析

聊天系统不外乎两个方面,服务器端和客户端。简单分析一下两个方面所要完成的任务,对设计这个程序来说,等于完成了一半。首先来看一下服务器。

服务器端的任务:

1、服务器端应当建立一个ServerSocket,并且不断进行侦听是否有客户端连接或者断开连接。

2、服务器端应当是一个信息发送中心,所有客户端的信息都传到服务器端,由服务器端根据要求分发信息。

  以上就是服务器端最主要的两个任务。不难看出,服务器端的任务并不复杂。

客户端应该完成的工作包括:

1、与服务器端建立通信通道,向服务器端发送信息。

2、接收来自服务器的信息。

  相对服务器而言,客户端的任务更加简单,有了以上的简单分析,可以知道,解决上述四个问题,即完成了该聊天系统的核心。

2.系统开发技术

2.1 JAVA的网络功能与编程

2.1.1JAVA概述:

美国硅谷有一句行话,每10年~15年有一次轮回。最近的一次轮回就是从Java开始。JAVA是一个由Sun公司开发而成的新一代编程语言。使用它可在各式各样不同种机器、不同种操作平台的网络环境中开发软件。不论你使用的是哪一种WWW浏览器,哪一种计算机,哪一种操作系统,只要WWW浏览器上面注明了“支持JAVA”,你就可以看到生动的主页。JAVA正在逐步成为Internet应用的主要开发语言。它彻底改变了应用软件的开发模式,带来了自PC机以来又一次技术革命,为迅速发展的信息世界增添了新的活力。

JAVA语言有下面一些特点:简单、面向对象、分布式、解释执行、鲁棒、 安全、体系结构中立、可移植、高性能、多线程以及动态性。

丰富的类库JAVA提供了大量的类以满足网络化、多线程、面向对象系统的需要。语言包提供的支持包括字符串处理、多线程处理、数学函数处理等,可以用它简单地实现JAVA程序的运行平台。实用程序包提供的支持包括哈希表、堆栈、可变数组、时间和日期等。输入输出包用统一的"流"模型来实现所有格式的I/O,包括文件系统、网络、输入低级网络包用于实现Socket编程。抽象图形用户接口包实现了不同平台的计算机的图形用户接口部件, 包括窗口、菜单、滚动条、对话框等,使得JAVA可以移植到不同平台的机器。网络包支持Internet的TCP/IP协议,提供了与Internet的接口。 它支持URL连接,WWW的即时访问,并且简化了用户/服务器模型的程序设计。

JAVA和C、C++对于变量声明、参数传递、操作符、流控制等使用了相同的传统,使得熟悉C、C++的程序员能很方便地进行编程。同时, JAVA为了实现其简单、鲁棒、安全等特性,也摒弃了C和C++中许多不合理的内容。[1]

2.2 JAVA语言在网络上的应用

JAVA程序可以获取网络上结点的图象、声音、HTML文档及文本等资源,并可以对获得的资源进行处理。例如JAVA程序可以每隔一定时间读取某结点提供的最新数据,并以图表的形式显示出来。在编程处理上,一般先生成一个URL类型的对象,然后用JAVA中相应的方法(method)获取该对象所代表的资源。

2.3 IP/TCP协议常识

2.3.1 IP、TCP协议的特点:

TCP/IP(Transmission Control Protocol/Internet Protocol)是传输控制协议/网际协议的缩写, TCP/IP是当今网络互联的核心协议。TCP/IP协议的体系结构共有四个层次,即应用层、传输层、网络互联层和网络接口层。

IP协议的作用:第一,它是网络层的协议,提供互联网上数据传输的统一格式。第二,提供不可靠的无连接的服务。第三,定义了互联网上的传输数据的基本单元,提供了供路由选择的信息,没有差错校验和处理的机制。

TCP协议的功能:差错控制——可靠性、面向连接、分段(Segment)、端口号。TCP是传输控制协议,是面向连接的提供了一种可靠的传输服务,它用三次握手和滑动窗口机制来保证传输的可靠性,及进行流量控制。

2.3.2 TCP/IP协议进行传输数据传输的过程:

应用程序为了传输数据会调用TCP,将数据和对应的参数传给TCP,将TCP数据包封装在IP包内,通过网络送给目的TCP。接收方TCP在接收到数据后通知上层应用程序,TCP将保证接收数据的正确性。在实现TCP的主机上,TCP可以被看成是一个模块,和文件系统区别不大,TCP 也可以调用一些操作系统的功能,TCP不直接和网络打交道,控制网络的任务由专门的设备驱动模块完成。TCP只是调用IP接口,向TCP提供所有TCP需要的服务[2]

2.3.3 端口号:

有的时候,一个ip地址不能完整的标识一台服务器,这是因为一台物理性的计算机同时运行着多个应用程序,这就需要我们来区别同一台机子上的不同的服务,所以就在传输层和应用层上设置接口,就是端口。端口实际是一个16位长的地址,他的范围是0~65535之间,其中0~1023是熟知端口,主要是给提供服务的应用程序使用,这些端口是所有应用进程都知道的,1024~65535为一般端口,也称动态端口、连接端口,用来随时分配要求通信的个客户端应用程序。在数据传输过程中,各种服务器不断的检测分配给他的端口,一边发现要求和他通信的客户端[3]

2.4 Socket的简介:

Socket,简称套接字,用于实现网络上客户和服务器之间的连接。也就是说网络上两个或两个以上双工方式通信的进程之间总有一个连接,这个连接的端点成为套接字,套接字是在比较低的层次上通信的。

具体的说:一个服务器应用程序一般侦听一个特定的端口等待客户端的连接请求,当一个连接请求到达时,客户端和服武器端建立一个通信连接,在连接过程中,客户端被分配一个本地端口与一个Socket建立连接,客户端通过写Socket来通知服务器,以读Socket中的信息,类似的服务器也获得一个本地端口,它需要一个新的端口号来侦听原始端口上的其他连接请求。服务器也通过它的本地端口连接一个Socket,通过读写和客户端通信[8]

2.4.1 Socket程序的工作过程:

1.建立Socket连接:在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接道。

2.数据通信:利用虚拟连接通道传送数据信息进行通信。

3.关闭:通信结束时,再将所建的虚拟连接拆除。

具体如下:[12]

图1 Socket程序的工作过程

2.4.2 三次握手协议:

第一次握手:原主机发送一个带有本次连接的序号的请求的一个数据帧

第二次握手:目的主机收到请求后,如果同意连接,则发回一个带有一个本次连接序号和源端机连接序列号的确认。

第三此握手:源端机收到含有两次初始序列号的应答后,再向目的主机发送一个带有两次连接的序列号的确认。

具体过程如下:[4] 

图2 三次握手协议

3.系统分析与设计方案

3.1开发环境及工具

本系统所用的工具:

服务器端:(Windows平台)首先应有java环境jdk,建议采用jdk1.4.2;Eclipse

客户端: java环境jdk,建议jdk1.42;Eclipse 

本系统运行所需用到的环境为:

硬件配置 

中央处理器(CPU :P4 2.0G以上的处理器;

  盘:40GB以上硬盘;

  存:256以上的DDR内存;

显  卡:128M以上显存显卡

软件配置:WINDOWS XP 版本、All-In-One-Eclipse-311j2sdk-1.42等。

3.2聊天系统的总体设计要点

3.2.1实现思想[15]

在Internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。

服务器端工作流程:

服务器端通过系统调用创建一个ServerSocket与指定的本地端口绑定,就可以在端口进行侦听。如果有客户端连接请求,则创建一个Socket,将客户端地址赋给这个Socket。然后登录成功的客户就可以在服务器上聊天了。

客户端工作流程:

客户端程序相对简单,只需要建立一个Socket与服务器端连接,成功后通过这个Socket来发送和接收数据就可以了。

3.2.2 系统功能流图:

图3 系统功能流图

功能流程说明如下:

(1)启动服务器程序,服务器端创建一个ServerSocket对象,指定端口号。

(2)ServerSocket对象等候客户端的连接请求。

(3)启动客户端程序,登录用户。如果未注册,先注册再登录。登录成功进入聊天室用户界面。

(4)客户端创建一个Socket对象,指定主机地址和端口号,向服务器发送连接请求。

(5)服务器端收到客户端请求,建立一条TCP连接,再创建一个Socket对象与客户端

的Socket对象进行通信。

(6)服务器端和客户端分别建立字节输入/输出流,进行数据传输准备。

(7)服务器端和客户端通过各自的字节输入流获得对方发送过来的数据,通过字节输出

向对方发送数据。

(8)一方决定结束通信,向对方发送结素信息,另一方收到结束信息后,双方分别关闭各自的TCP连接。

(9)对象停止等候客户端连接请求。

3.2.3 多用户实时工作原理图[5]

图4 多用户实时工作原理图

注:服务器的run()方法中采用了while(true)结构,不断监听客户端的请求,如收到请求,建立与当前请求的客户端连接的套接字,从而与客户端建立联系。

3.3系统的功能模块划分及设计原理

当用户聊天时,将当前用户名、聊天对象、聊天内容和是否私聊进行封装并且序列化,然后与服务器建立Socket连接,再用对象输出流包装Socket的输出流将聊天信息对象发送给服务器端。当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其强制转换为Chat对象,并将本次用户的聊天信息对象添加到聊天对象集Message中,以供所有聊天用户访问。接收用户的聊天信息是由多线程技术实现的,因为客户端必须时时关注更新服务器上是否有最新消息,在本程序中设定的是1秒刷新服务器一次,如果间隔时间太短将会增加客户端与服务器端的通信负担,而间隔时间长就会让人感觉没有时效性,所以经过权衡后认为1秒最佳,因为每个用户都不可能在1秒内连续发送信息。当每次用户接收到聊天信息后将会开始分析聊天信息然后将适合自己的信息人性化显示在聊天信息界面上。

1、服务器程序模块(AppServer.java)

服务器与客户间通过套接口Socket(TCP)连接。在java中使用套接口相当简单,Java API为处理套接口的通信提供了一个类java.net.Socket,使得编写网络应用程序相对容易。服务器采用多线程以满足多用户的请求,并通过创建一个ServerSocket对象来监听来自客户的连接请求,默认端口为8000,然后无限循环调用accept()方法接受客户程序的连接。

服务器具有以下功能

(1)启动服务,建立侦听,接受客户端连接。

(2)从流中读取经过序列化的对象。

(3)分析读取的对象进行相应的操作(登录信息的验证反馈、注册信息的验证和反馈、转发聊天信息等)

(4)向客户端发送系统消息。

(5)保存日志

(6)关闭服务,并向客户端发送服务器关闭消息。

服务器程序模块源码:

ServerSocket serverSocket;         //服务器套接字

static Vector u=new Vector(1,1);  //初始聊天用户对象集

static Vector v=new Vector(1,1);  //初始聊天信息对象集

public void run()

 { Try 

//无限循环实现多线程,实现与多个用户的同时连接

while(true)  

{

 //监听并接受客户的请求

  Socket client = serverSocket.accept();

        //继承Thread 支持多线程

   new Connection(client,u,v);   

}}

 catch(IOException e)

     {fail(e,"不能监听!");}

}

当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其强制转换为Chat对象,并将本次用户的聊天信息对象添加到聊天对象集Message中,以供所有聊天用户访问。

2、登录程序模块(Login.java)

是客户端程序登录界面,负责用户帐号信息的验证与接收服务器的反馈。客户端请求连接,服务器的accept()方法建立与客户端的套接字连接。客户端将登录信息封装成Customer对象通过输出流发送服务器,等待服务器的验证,服务器反馈验证信息,客户端根据反馈信息进行登录和登录信息错误处理。

关键代码如下:

try

 //连接到服务器

Socket toServer;

 toServer = new Socket(strServerIp,1001);

//写客户详细资料到服务器socket

ObjectOutputStream streamToServer=new ObjectOutputStream (toServer.getOutputStream());

streamToServer.writeObject((Customer)data);  

 //读来自服务器socket的登录状态

 BufferedReader fromServer=new BufferedReader(new InputStreamReader(toServer.getInputStream()));

String status=fromServer.readLine();

}

3、注册程序模块(Register.java)

为客户端程序注册界面,负责用户帐号信息的注册验证与反馈。注册模块的原理跟登录模块基本相同。注册信息封装成Register_Customer对象,但服务器只验证用户名,且只要求用户名不重复,服务器检验注册信息文件中的用户名,若不重复则反馈注册成功的信息。其他的注册信息(密码、年龄、邮箱)合法性都交给注册模块自己完成。

4、客户聊天主程序模块(ChatRoom.java)

客户通过Socket(InetAddress,port)建立与服务器的连接。客户端通过构造ObjectInputstream,ObjectOutputstream与服务器建立输入输出流,然后双方通过该输入输出流来相互传递信息,服务器一旦收到客户方的连接请求,服务器accept()方法返回一个新建的Socket对象。客户端接受服务器传来的聊天信息进行处理后显示在自己的聊天纪录中。同样客户端要发送文件和信息时也向服务器发送请求,服务器同样通过accept()方法返回一个Socket对象,客户端就可也进行相应的操作。

聊天客户端必须具有以下功能。

(1)连接服务器,发送用户登陆请求。

(2)向服务器发送聊天信息。

(3)接收服务器转发的了信息。

(4)接受服务器发送的系统消息。

关键源码如下:

public void run() {

try {

while (true)

{

Socket toServer;

toServer = new Socket(strServerIp, 1001);

// 将信息发往服务器

Message messobj = new Message();

ObjectOutputStream streamtoserver = new ObjectOutputStream(

toServer.getOutputStream());

streamtoserver.writeObject((Message) messobj);

// 收来自服务器的信息

ObjectInputStream streamfromserver = new ObjectInputStream(

toServer.getInputStream());

messobj = (Message) streamfromserver;

}

}

}

因为使用了while(true)无限循环,使得客户端能不断更新聊天纪录,实现了实时聊天。这里我们设置的更新周期为1s,这样使服务器的负担不会太重,1s的等待时间也使得用户能够接受。

5、音乐播放程序模块

     根据JAVA系统饿MIDI功能来创建一个Sequencer对象,使用Javasound来处理MIDI声音文件。在创建好Sequence类对象之后,就可以播放该MIDI声音文件了,播放的步骤如下:

(1)调用音序器(Sequence对象)中的open()方法,使声音播放设备处于准备状态;

(2)调用音序器的start()方法,开始播放声音文件;

(3)调用close()方法结束播放,并释放资源。

    在线程使用while()做到循环播放,在音乐播放和停止的控制上,通过控制线程中while() 的条件来实现,具体参见代码。

4. 系统实现与最终效果

4.1系统工作的过程:

本系统的编译环境,及编写平台为java.。主要用到的类为java.net包中的Socket类。编写了多个图形界面,包括服务器界面,客户端聊天界面,登录界面,注册界面,音乐播放器界面等。

以服务器所在的主机的ip为“127.0.0.1”所侦听的端口号为“8000”。分别先后启动服务器和客户端应用程序,客户端用户填入登录信息,当服务器收到客户端的登录请求后,若验证登录信息正确,则向客户端发送一个反馈一个登录成功的消息,客户端和服务器通过套接字建立了联系。建立连接后双方就可以相互通信:客户端在自己的文本框输入要发送的信息点击发送后,发送的信息就会显示在服务器和目的客户端的文本域中,同样服务器也可以在自己的文本框输入系统信息,点击发送信息按钮后,发送的信息就会显示在服务器和客户端的文本域中。如若要发送文本文件,在客户端界面点击“浏览”,显示一个打开对话框,在上面选则你要发送的文本(*.txt)点击发送,服务器再将文档发给目的用户,将在目的用户的聊天记录文本框中显示整个文档的内容。

4.2使用方法

1、服务器端:运行服务器程序

2、客户端:

(1)进入登陆界面,第一次登陆需要注册,点注册按扭。

(2)按要求填完注册信息。

(3)返回登陆窗口,输入用户名、密码,进行登陆。

(4)进入聊天室。

    进入聊天室后,就可以尽情的聊天了,可以和你喜欢的人私聊了,聊的开心话题还可以进行保存,当然,你也可以清屏。

4.3各功能模块运行效果

1、服务器

服务器界面左边是状态面板,包括服务器当前的状态、在线人数、最多在线人数(一个端口默认的最多访问量)、服务器的IP(这里我设计的是一个回路测试,只是为了测试的方便,不影响它的网络功能)以及服务器的端口号(由服务器指定);接下了的文本框是用户日志用于显示用户的登录、注册、退出的时间等一系列的信息。日志可以保存,这也是服务器应该有的最基本的功能。中间是在线用户列表,在上面显示了当前所有的在线用户,列表可滚动,方便查看;最右边是聊天消息总汇,用于显示所有用户的对话记录,当文本域中的内容大于文本域的长和宽的时候,文本域自动出现水平滚动条或垂直滚动条,拖动它们来查看所有的内容,主要功能是能监察聊天内容的合法性,如果聊天内容非法服务器可以向用户发出警告的系统信息;下面为一个文本框,主要是用于服务器向客户端发送信息,既可是中文,也可是字母;最下一排是控制按钮,“发送信息” 点击后将文本框中的内容发送给客户端,同时清空文本框中的内容,并且在服务器端的文本域显示“系统消息:”;“关闭服务器”:点击后关闭服务器。

图5 服务器

2、登录

    这里将服务器的IP设置为默认的,127.0.0.1回路测试,不可编辑。所以这一项可以跳过不填。用户名和密码输入为注册成功的用户,单击登录按钮进入聊天室。如果用户名和密码错误可以弹出相应的对话框。单击注册按钮进入注册界面,这个操作一般提供给新用户。   

图6 登录界面

3、注册

注册界面为新用户提供了注册信息输入的界面。界面如下,用户名没有限制,中文、英文符号都可以;密码只要保证两次输入的一致;性别默认为“男”可以通过单选框进行选择;年龄必须是0—100之间的数字,在这个范围之外为非法;电子邮箱只提供的对“@检查,输入的电子邮件中必须有且只有一个 “@”,否则为非法;系统提供了头像选择的功能,可以选择自己喜欢的头像。

图7 注册界面

4、客户端主聊天界面

客户端聊天用户端界面如下:最上面的菜单栏提供了“系统”和“帮助”两个子菜单,“系统”包括“清除屏幕”、“保存聊天纪录”、“退出系统”等项目,“帮助”提供了聊天室的介绍信息;最左边是用户列表,显示了聊天室的在线用户列表;在线用户列表下边的标签可以显示在线人数,极大的方便了用户;右边的大的文本框显示出聊天纪录,用户可以在这看到其他成员发给自己的聊天信息,也是聊天室的关键部分之一。

下边的单行文本框输入用户预发送的内容,这时你可以通过双击在线用户列表框选择聊天的对象,再通过单击单选框(私聊,公聊,群聊选择聊天的方式,上述步骤都完成后就单击发送按钮发送聊天信息。聊天室附加了文件传送的功能,这是对聊天室单一聊天功能的拓展。在最下边附加功能面板上,还有音乐播放按钮,单击之后将出现音乐播放器界面。

图8 聊天用户端界面

5、音乐播放

单击聊天用户端界面中的音乐,会弹出下图所示的播放器界面,单击播放按钮,默认播放列表中的第一首歌,也可以双击列表框中音乐名称,选择用户想听的歌。播放列表下面的单行文本框显示当前播放的音乐的名称。停止按钮,停止当前播放的音乐。播放器模式为循环播放列表中的音乐。

图9 音乐播放器

6、系统总效果图

下图为系统回路测试的总的效果图,包括服务器和三个用户某个时刻的情况,用户之间有私聊和公聊,服务器发布了系统信息。总之聊天室的最基本功能很好的体现出来了。

图10 聊天室总的效果图

4.4拓展的功能

客户端可以向服务器发送一个整篇文档为“*.txt”,具体如下:在客户端界面点击“浏览”,显示一个打开对话框,在上面选则你要发送的文本(*.txt)点击发送,服务器再将文档发给目的用户,将在目的用户的聊天记录文本框中显示整个文档的内容。

4.5功能模块测试

对软件的测试在软件开发中非常重要也非常必要,软件分析、设计过程中难免有各种各样的错误,需要通过测试查找错误,以对软件进行修改和进一步完善。软件测试的目标是为了发现程序中的错误而执行程序的过程,好的测试方案是发现软件尽可能多的错误,从而对错误进行修改以提高软件质量。

测试本系统采用黑盒测试法:主要测试软件能否满足功能要求,检查输入能否被正确地接受、能否正确地输出结果。

测试步骤:

用户登录测试:

输入用户名(js)和密码(2),系统提示用户密码错误,重新输入密码(1),成功进入系统。

用户注册测试:

输入邮箱( jiangshuguangj163.com),系统提示邮箱输入非法,重新输入(jiangshuguang@163.com),成功注册。

5.总 结

5.1 毕业设计总结和展望

本毕业设计实现了简单的实时聊天功能,经过细心的调试和排错解决了绝大部分的问题。根据实现的情况看,具有较友好的聊天界面生成效果,以及流畅的网络通信效果。基本满足了结构化、界面友好、速度快、安全性以及稳定性等特点。系统具有目前聊天室的基本功能:包括支持多种头像,支持私聊,支持在线聊友显示,支持用户定制自己的私人头像,支持上传文件。

   由于时间短,任务重,加上本人能力有限,许多设想还未能体现,如语音、视频聊天等等,在今后工作之余,本人会尽力付之实践,使其尽善尽美

5.2  经验和感想

基本JAVA聊天室开发与实现作为毕业设计,是本人目前做过的最大的程序。虽然大学期间在设计过一个简单的ASP聊天室设计,并且经过反复的调试修改也达到了一定的精确性,但接手这个题目时仍感觉十分棘手以前并且习惯于C++,对Java的是学习与使用很少,决定用Java 来做这个毕业设计,对我来说是一个很大的挑战。

在学校学习期间做过很多课程设计,大多规模很小,跟实际应用还存在很大的差距,一直都想亲手设计一个比较大的系统能够基本拿出来使用。并且对程序开发也很感兴趣,只是以前技术和时间都有限,一直都没有实现。现在有机会了,当看到自己的程序经过无数次的调试、修改后,能最终看到成品,有无比自豪的心情,正式商业的软件的人性化界面和各个游戏间差异的结构会让人有去开发的冲动。平时自己也常到其它聊天室进行聊天,因此,自己也曾想过以后有机会了一定亲自设计一款聊天系统,如今,总算实现了自己的梦想。基于JAVA聊天系统设计与实现毕业设计正是建立在Java平台上,是本人以前未曾接触过的领域。凭着探索新知识的热情,我选择了该设计题目。

学习该平台背景和功能的时间远远超出了我想象的时间。在设计初期,为了画出一个简单的图形,都需要花一定的时间去掌握和熟悉。聊天室主要是要处理好多线程的问题,大多数的参考资料都只提供单线程的处理,在这方面我动了一番脑筋,在线程之中再创建同等线程,从而实现了多线程。后来在做音乐播放器模块时又碰到了怎样终止线程的问题,我就得广泛去找资料,但J2ME为一种刚出现仅几年的新技术,国内的参考资料非常少,仅有的几本也停留在简单的介绍阶段。台湾的王森写了两本较好的书,给了我很大的帮助,但对设计该聊天系统来说,仍只够入门。在发觉中文资料的稀少后,我不得不将各个资料进行整合,提炼出自己需要的,并进行了大量的试验,把自己的想法编出来,一遍一遍的进行调试,最终得到自己想要的效果。在学习期间,本人还通过网上的各种JAVA源码进行学习与研究,我原以为这样的设计水平将无法完成毕业设计,但当掌握了大部分应用技巧时,剩下的聊天系统思路的设计就显得不是最大的障碍了。指导老师说Java的上手比较困难,需要配置的环境和掌握的背景比较多。现在看来的确是这样。

我花了几个月写完这个程序,经过了很多次的调试,终于达到了现在的效果。原先认为不可能的事,我发现,如果有不畏困难的信心和肯钻研的勇气,就一定会完成,甚至达到意想不到的效果。并且加深了对java的理解,我相信自己的java编程水平提高了很多。

致  谢

紧张而忙碌的毕业设计就要结束了,在完成了系统的功能设计后,我感到由衷的喜悦和自豪。在我做毕业设计期间,许多老师,同学和朋友给我我无私的关怀和帮助,在此,我要向他们表示衷心的感谢。最重要的是要感谢段老师及时的督促,技术上的帮助以及许多建设性的指导。

这次的毕业设计让我受益匪浅。在理论课的学习中,我掌握了基础课和专业课的理论知识,也曾经做过一些程序设计的联系和计算机综合试验,但真正动手设计一个实用软件,还是第一次。在这次的毕业设计中,我曾遇到了许多困难,而在克服这些困难的过程中,我的各方面的能力又有了很大的提高,使我的理论知识更好的与实践相结合,增强了专业技能的可实践性。从调研,需求分析到查找资料,结构设计,详细设计以及调试程序,到最后的写使用说明书,我终于设计出了一个比较完整的,周密的,可使用的聊天系统。通过这次的毕业设计,我真正了解了软件工程设计的整个过程,既巩固了以前的理论知识,也为我以后的工作奠定了良好的基础。

当然,由于时间的短促,我所完成的系统并不是尽善尽美的,还有待进一步的修改和完善。最后,请允许我再一次向毕业期间无私帮助过我的老师,同学和朋友表示最衷心的感谢。

参考文献:

[1] Bruce EckelJava编程思想[M].北京:电子工业出版社,2006

[2] Cay S Horstmann,Gary CornellJava2核心技术[M].北京:机械工业出版社,2006

[3] 陈刚.Eclipse从入门到精通[M].北京:清华大学出版社,2005

[4] 王森.快易通Java程序设计[M].北京:北京大学出版社,2000

[5] 叶至军.由浅入深——Java2自学手册[M].北京:人民邮电出版社,2004

[6] 王森.Java语言程序设计[M].北京:清华大学出版社,2005

[7] Art Taylor,Randy Layman,Brian BuegeJ2EE Java黑客大曝光:开发安全的Java应用程序北京:清华大学出版社,2003

[8] 杨丽娜.电子商务环境中J2EE的关键技术及其应用研究[D].武汉:武汉理工大学,2005

[9] 宛延闿.Java编程技巧[M].北京:机械工业出版社,2005

[10] 钟珞,刘玲,夏红霞.基于JavaMail API的Web邮件系统开发[D].武汉:武汉理工大学计算机科学与技术学院  2006

[11] 徐剑军,徐鹏.Java嵌入技术[M].北京:清华大学出版社,1998

[12 Jan NewmarchJini技术开发指南[M].北京:中国电力出版社,2003

[13 ]Paul B MondayFMA和Jiro入门[J/OL]http://www.ibm.com

[14] SUNJava API中文文档[J/OL].http://Java.sun.com

[15] Ncic.用Java实现网络语音信号传送[J/OL].

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等天晴i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值