java聊天室论文.docx

上传人:b****6 文档编号:4336249 上传时间:2022-11-29 格式:DOCX 页数:48 大小:95.11KB
下载 相关 举报
java聊天室论文.docx_第1页
第1页 / 共48页
java聊天室论文.docx_第2页
第2页 / 共48页
java聊天室论文.docx_第3页
第3页 / 共48页
java聊天室论文.docx_第4页
第4页 / 共48页
java聊天室论文.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

java聊天室论文.docx

《java聊天室论文.docx》由会员分享,可在线阅读,更多相关《java聊天室论文.docx(48页珍藏版)》请在冰豆网上搜索。

java聊天室论文.docx

java聊天室论文

 

摘要I

AbstractII

前言1

1.绪论2

1.11.1关于Java聊天室概述2

1.1.1选题的依据及其课题的意义2

1.1.2开发语言的选择3

2.开发环境简介3

2.1开发工具的选择4

2.2关于JDK1.44

2.3JAVA开发环境的建立4

3项目概况5

3.1、功能简介5

3.2、套接字通信8

4概要设计9

4.1聊天室服务器端设计。

9

4.1.1图形界面的设计事件处理10

4.1.2实现服务器消息的收发10

4.1.3定义用户的管理10

4.1.4设计帮助文档11

4.2聊天室客户端设计11

4.2.1图形界面以及事件处理8

4.22实现消息的收发8

4.23侦听端口的修改配置

4.24设计帮助文档9

5详细设计16

5.11.服务器端的界面设计16

5.12实现服务器消息的收发20

5.13用户侦听设计21

5.14定义用户的管理22

5.15设计帮助文档23

5.2服务器端的设计26

5.21.客户端的界面设计27

5.22实现客户端的收发消息28

5.33端口的配置34

5.44用户名登录的修改37

5.55帮助文档39

6.本章小结40

参考文献42

结束语36

致谢37

 

摘要

摘要

本系统是java基于c/s模式的聊天室程序。

聊天室共分为服务器端和客户端两个部分,服务器端程序主要负责侦听客户端发来的消息,客户端需要登录到服务器端才能实现正常的聊天功能。

基于Java的聊天室是利用Eclipse开发包工具进行开发出的一款网络聊天室。

这款聊天室是套接字通信开发采用c/s模式的聊天室程序。

聊天室共分为服务器端和客户端两个部分,服务器端程序主要负责侦听客户端发来的消息,客户端需要登录到服务器端才能实现正常的聊天功能。

本文分为七个部分,第一章详细介绍了J2ME的发展历史以及MIDP程序的基本框架生命周期以及手机多媒体的发展,第二部分介绍了开发工具的选择以及开发环境的搭建,第三到第五部分是系统的设计过程包括需求分析,系统的概要设计和详细设计,第六部分是系统测试与发布。

关键词:

JAVA聊天室

Abstract

ThedevelopmentofHandsetVideoPlayerisbasedontheJ2MEandusestheEclipseremovabledevelopmentpackagetool.ThisHandsetVideoPlayerhasusedtheMIDP2.0oftheJ2MEwhichprovidesvideoconnectionMMAPI(MobileMediaAPI)thatcanbroadcastandtranscribeaudiotobroadcastvideowhoseformatismpg,wmvandsoon.

Thisarticledividesintosevenparts,thefirstchapterdetailedintroducesthedevelopmenthistoryofJ2ME,theMIDPprocedurebasicbonelifecycleandthedevelopmentofhandsetmultimedia,thesecondpartintroducesthechooseofdevelopmenttoolandthebuildingofdevelopmentenvironment,fromthethirdparttothefifthpartisthedesignprocessofsystemwhichisincludethedemandanalysis,thesystemoutlinedesignandthedetaileddesign,thesixthpartisabouttestandtheissueofthesystem.

Keyword:

HandsetVideoPlayer;J2ME;MIDPprocedure

 

1.绪论.

1.1关于Java聊天室概述

1..1.选题的依据及课题的意义

随着网络信息时代的来临,INTERNET应用越来越广泛,人们越来越习惯于在网上获取和交流信息。

据调查显示,80%以上的人上网都会打开聊天工具来聊天,而几乎每一个年轻人都会去聊天。

使用网上聊天已经成为现代年轻人一种新的交往方式。

根据网上调查,在所有参加网上聊天的大学生中,进聊天室进行聊天的占69.65%,使用网络寻呼机进行聊天的占37.93%,还有2.75%的受访者声称自己使用其他方式进行聊天。

进聊天室聊天是一种较为公共的聊天方式,而使用网络寻呼机则是一种具有排他性的聊天方式,一般能够用网络寻呼机进行联络的,都是比较熟悉的网友。

使用网络寻呼机还意味着使用者希望自己的网友随时与自己联系,表现出一种开放性的网上交际观念。

聊天室更适合于陌生人之间进行较为主观、感兴化的讨论。

所以有大部分的人会进入聊天室聊天,它会给人一个完全自由的聊天世界。

作为一个信息技术专业的学生,经过几年大学知识的系统学习,应该对计算机科学与技术这个名词有了一定的认识。

在这几年里,我对本专业学习也有了长足的进步,在毕业即临时,我就选择了自己感兴趣的基于API的聊天室这个课题作为我的毕业设计及论文写作,以检验几年来的学习情况。

1.2.开发语言的选择

聊天室的发展呈现万花筒般的发展,开发工具可以是asp,php,cgi,vc++,c#,java等等,做出的聊天室各有千秋,本人以java为开发语言,对聊天室进行开发。

相信熟悉Java演进历史的人或多或少都听说过,Java技术一开始并非就叫做Java,而是叫做OAK,而且最早的时候就是为了嵌入式系统而设计的一项产品。

后来因为网际网路的发达,而OAK的诸多特性刚好又适合用在网路上(例如可移植性、编译后程序码很小),因为商标已被注册的关系,因此OAK被改名成Java,从此因缘际会地成了网路上的闪亮巨星,并随著时间越来越成熟,也慢慢地产生了许多非原本预期中的相关运用。

虽然Java已经被用到许多企业级软件上,可是其实骨子里面还是非常适合用在嵌入式系统之中。

从上图可以看到从Java1.0发表之后,Java就被广泛地使用在桌上型应用程序以及Applet的开发上,但是,从Java1.1开始,Java又回到了它一开始的老路--也就是嵌入式系统方面的应用,在当时SunMicrosystems发表了EmbeddedJava与PersonalJava(也有人简称为PJava)这两项规格。

其中EmbeddedJava是为了资源十分有限,而且没有显示设备的嵌入式装置而设计;PersonalJava则是为了在能够与网际网路连线、并拥有显示系统(例如彩色LCD)的消费性电子装置而设计。

接着Java的版本演进到Java2,这时为了再明显区分各种Java的应用,所以分割出了J2EE、J2SE、以及J2ME三种版本。

所有JAVA版本与其所依据的虚拟器所堆积起来的结构如图1.1所示。

图1.1JAVA各版本结构

2.开发环境简介

2.1开发工具的选择

操作系统:

linux

开发工具:

JDK1.4

Eclipse、Eclipseme插件

2.2关于JDK1.4

.JDK是Sun公司分发的免费Java开发工具,JavaSDK最早叫JavaSoftwareDevelopKit,后来改名为JDK,即JavaDevelopKit。

JDK作为Java开发工具包,主要用于构建在Java平台上运行的应用程序、Applet和组件等。

 

2.3JAVA开发环境的建立

为了能够编写并运行我们所编写的JAVA程序,我们需要在自己的本地机器中安装JDK开发包,JDK是内置各种JAVA开发工具,JAVA虚拟机,JAVAAPI的一个压缩包。

(1)从下载J2SDK,最新的版本是1.4.2_08,下载后的JDK是个执行文件,我们运行后可直接安装,缺省的安装目录是C:

\j2sdk1.4.2_08。

(2)在电脑中配置环境变量,点右键打开我的电脑属性,在高级中有个环境变量,选择新建系统变量:

CLASSPATH,变量值:

“C:

\j2sdk1.4.2_07\lib\tools.jar;C:

\j2sdk1.4.2_07\lib\dt.jar;”,再新建变量名:

PATH,变量值:

“C:

\j2sdk1.4.2_07;C:

\j2sdk1.4.2_07\bin;”。

具体设置如图2-3所示:

 

图2.1系统环境变量配置

(4)选择一个编译工具。

Eclipse是一款非常优秀的开源IDE,非常适合Java开发,由于支持插件技术,受到了越来越多的开发者的欢迎。

最新的Eclipse3.1不但界面做了很大的增强,而且增加了代码折叠等众多优秀功能,速度也有明显的提升。

配合众多另人眼花缭乱的插件,完全可以满足从企业级Java应用到手机终端Java游戏的开发。

本人选择了Eclipse作为这次毕业设计的工具,选择Eclipse作为开发的理由再简单不过了,占用资源少,JBuilder2005和SunONEStudio8.0ME建议标准内存1G以上,最低512M,目前国内个人电脑一般都达不到这个配置。

同时Eclipse目前基本为国内开发Java程序的标准的IDE,使用Eclipse将使手机程序开发更加简洁。

(5)安装Eclipse插件,并进行相应的配置[5]。

 

3.项目概况

3.1、功能简介

本系统是java基于c/s模式的聊天室程序。

聊天室共分为服务器端和客户端两个部分,服务器端程序主要负责侦听客户端发来的消息,客户端需要登录到服务器端才能实现正常的聊天功能。

(1)服务器端的主要功能有:

a.在特定端口上进行侦听,等待客户端连接。

b.用户可以配置服务器的侦听端口,默认是8889。

c.可以向已经连接的客户端发送体统消息。

d.统计在线人数。

e.停止服务时,断开所有的用户连接。

(2)客户端的主要功能有:

a.连接到已经开启聊天服务的服务端。

b.用户可以配置要连接的服务器IP地址和端口号。

c.用户可以配置连接后的用户名。

d.服务器开启时,用户可以随时登录与注消。

c.用户可以想所有的人或者指定的个人发送消息。

 

3.2、套接字通信

套接字通信(socket)是网络的基本通信单元,又称为端口,通常用来实现客户方和服务方的连接。

网络上的两个程序通过双向的连接实现数据的交换,实现双方通信前链路的每一端都建立一个socket,通过对socket的读写操作实现网络的通信功能。

socket通信的过程主要有:

创建socket,打开连接到socket的输入流和输出流,按照一定的协议对socket进行读写操作,关闭socket这四个步骤,通过这个四个步骤可以完成一般的socket通信。

为了完成socket通信,包中提供了socket和serverSocket这两个类,它们分别用来表示双向连接的客户端和服务器断,它们的构造函数有:

Socket()

通过系统默认类型的SocketImpl创建未连接套接字

Socket(InetAddressaddress,intport)

创建一个流套接字并将其连接到指定IP地址的指定端口号。

Socket(InetAddressaddress,intport,InetAddresslocalAddr,intlocalPort)

创建一个套接字并将其连接到指定远程端口上的指定远程地址。

Socket(Proxyproxy)

根据不管其他设置如何都应使用的指定代理类型(如果有),创建一个未连接的套接字。

protectedSocket(SocketImplimpl)

创建带有用户指定的SocketImpl的未连接Socket。

Socket(Stringhost,intport)

创建一个流套接字并将其连接到指定主机上的指定端口号。

Socket(Stringhost,intport,InetAddresslocalAddr,intlocalPort)

创建一个套接字并将其连接到指定远程主机上的指定远程端口。

其中端口号涉及到一个分配的问题,TCP/IP将端口号分成了两个部分,少量的作为保留端口,端口号小于256,以全局方式分配给服务进程。

因此每一个标准服务器都拥有一个全局公认的端口,即使在不同的机器上其端口号也是不同的。

对于常见的端口号主要有:

80端口提供www服务,23提供ftp服务,110提供pop服务。

剩余的为自由端口,

4.概要设计

服务器端的程序

客户端的程序

端口号:

8889

IP:

192.168.5.72

设置IP与端口号

IP:

192.168.5.72

端口号:

8889

建立连接

本系统是java基于c/s模式的聊天室程序。

聊天室共分为服务器端和客户端两个部分,服务器端程序主要负责侦听客户端发来的消息,客户端需要登录到服务器端才能实现正常的聊天功能。

 

4.1、聊天室服务器端设计。

(1)图形界面的设计事件处理。

调用java.swing和java.awt包进行图形界面处理和java.swing.event与java.awt.event事件的侦听处理。

(2)实现服务器消息的收发。

分别定义向所有用户或某一个用户发送消息的方法。

(3)定义用户的管理

定义添加用户,删除用户,返回用户数目,根据用户名查找用户,根据索引查找用户。

(4)设计帮助文档

单击帮助按钮,弹出一对话框显示本系统的有关信息.

 

...........4.2聊天室客户端设计

(1)图形界面以及事件处理

调用java.swing和java.awt包进行图形界面处理和java.swing.event与java.awt.event事件的侦听处理。

 

(2)实现消息的收发

分别定义向所有用户或某一个用户发送消息的方法。

(3)侦听端口的修改配置

用户对所要连接的服务器IP及侦听端口进行修改配置

(4)设计帮助文档

单击帮助按钮,弹出一对话框显示本系统的有关信息.为用户提供信息帮助。

 

5详细设计

5.1服务器端的设计

5.11.服务器端的界面设计

界面设计在应用程序很重要。

造就一款成功的聊天室软件,抛开其他各种因素不谈,主菜单的设计非常重要,其关键是可用性。

界面的可用性是指高效、易用、易学、易记。

如果用户界面不友好,即使用户对其感兴趣,由于菜单的原因使缺乏人性化设置,用户也不会再使用这个软件。

一个友好的界面是非常关键的,界面设计必须在软件设计时就进行事件添加和事件侦听和事件处理。

调用serverlisten()来实现服务端用户上线和下线的侦听,调用serverReceive()来实现服务器的消息收发。

服务器端的界面如下:

图1服务器端界面效果

 

服务器界面代码实现如下:

publicclassChatClientextendsJFrameimplementsActionListener{

Stringip="192.168.5.72";//连接到服务端的ip地址

intport=8888;//连接到服务端的端口号

StringuserName="梅山古道";//用户名

inttype=0;//0表示未连接,1表示已连接

Imageicon;//程序图标

JComboBoxcombobox;//选择发送消息的接受者

JTextAreamessageShow;//客户端的信息显示

JScrollPanemessageScrollPane;//信息显示的滚动条

JLabelexpress,sendToLabel,messageLabel;

JTextFieldclientMessage;//客户端消息的发送

JCheckBoxcheckbox;//悄悄话

JComboBoxactionlist;//表情选择

JButtonclientMessageButton;//发送消息

JTextFieldshowStatus;//显示用户连接状态

Socketsocket;

ObjectOutputStreamoutput;//网络套接字输出流

ObjectInputStreaminput;//网络套接字输入流

ClientReceiverecvThread;

//建立菜单栏

JMenuBarjMenuBar=newJMenuBar();

//建立菜单组

JMenuoperateMenu=newJMenu("操作(O)");

//建立菜单项

JMenuItemloginItem=newJMenuItem("用户登录(I)");

JMenuItemlogoffItem=newJMenuItem("用户注销(L)");

JMenuItemexitItem=newJMenuItem("退出(X)");

JMenuconMenu=newJMenu("设置(C)");

JMenuItemuserItem=newJMenuItem("用户设置(U)");

JMenuItemconnectItem=newJMenuItem("连接设置(C)");

JMenuhelpMenu=newJMenu("帮助(H)");

JMenuItemhelpItem=newJMenuItem("帮助(H)");

//建立工具栏

JToolBartoolBar=newJToolBar();

//建立工具栏中的按钮组件

JButtonloginButton;//用户登录

JButtonlogoffButton;//用户注销

JButtonuserButton;//用户信息的设置

JButtonconnectButton;//连接设置

JButtonexitButton;//退出按钮

//框架的大小

DimensionfaceSize=newDimension(400,600);

JPaneldownPanel;

GridBagLayoutgirdBag;

GridBagConstraintsgirdBagCon;

publicChatClient(){

init();//初始化程序

//添加框架的关闭事件处理

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.pack();

//设置框架的大小

this.setSize(faceSize);

//设置运行时窗口的位置

DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();

this.setLocation((int)(screenSize.width-faceSize.getWidth())/2,

(int)(screenSize.height-faceSize.getHeight())/2);

this.setResizable(true);

this.setTitle("聊天室客户端");//设置标题

//程序图标

//icon=getImage("/home/asd0709/lijie/jsp/liaotianshi/src/ChatServer/lily.gif");

//this.setIconImage(icon);//设置程序图标

show();

//为操作菜单栏设置热键'V'

operateMenu.setMnemonic('O');

//为用户登录设置快捷键为ctrl+i

loginItem.setMnemonic('I');

loginItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I,InputEvent.CTRL_MASK));

//为用户注销快捷键为ctrl+l

logoffItem.setMnemonic('L');

logoffItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,InputEvent.CTRL_MASK));

//为退出快捷键为ctrl+x

exitItem.setMnemonic('X');

exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));

//为设置菜单栏设置热键'C'

conMenu.setMnemonic('C');

//为用户设置设置快捷键为ctrl+u

userItem.setMnemonic('U');

userItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,InputEvent.CTRL_MASK));

//为连接设置设置快捷键为ctrl+c

connectItem.setMnemonic('C');

connectItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));

//为帮助菜单栏设置热键'H'

helpMenu.setMnemonic('H');

//为帮助设置快捷键为ctrl+p

helpItem.setMnemonic('H');

helpItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,InputEvent.CTRL_MASK));

}

/**

*程序初始化函数

*/

publicvoidinit(){

ContainercontentPane=getContentPane();

contentPane.setLayout(newBorderLayout());

//添加菜单栏

operateMenu.add(loginItem);

operateMenu.a

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

当前位置:首页 > 高中教育 > 初中教育

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

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