




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java程序课程设计任务书
JAVA聊天室系统设计和开发
1.关键内容:
用JAVA实现基于C/S模式聊天室系统。聊天室分为服务器端和用户端两部分,
服务器端程序关键负责侦听用户端发来信息,用户端需要登陆到服务器端才能够
实现正常聊天功效。
2.具体要求(包含技术要求等):
系统功效要求:
A.服务器端关键功效以下:
1.在特定端口上进行须听,等候用户端连接。
2,用户能够配置服务器端侦听端口,默认端口为8888。
3,向已经连接到服务器端用户发送系统消息、。
4.统计在线人数。
5.当停止服务时,断开全部用户连接。
B.用户端关键功效以下:
1,连接到已经开启聊天服务服务器端。
2.用户能够配置要连接服务器端IP地址和端口号。
3.用户能够配置连接后显示用户名。
4.当服务器端开启话:用户能够随时登录和注销。
5.用户能够向全部些人或某一个人发送消息。
学习并掌握一下技术:JavaJavaBcan等
熟练使用一下开发工具:Eclipse,JCreator等
实现系统上诉功效。
3,进度安排:
12月28日12月29日:课程设计选题,查找参考资料
12月3()日~1月1日:完成系统设计
1月2日~1月5日:完成程序代码编写
1月6日:系统测试和完善
1月7日:完成课程设计汇报,准备答辩
4.关键参考文件:
[1].张广彬孟红蕊张永宝.Java课程设计(案例精编)[M].清华大学出版社.
摘要
在网络越来越发达今天,大家对网络依靠越来越多,越来越离不开网络,由
此而产生聊天工具越来越多,比如,国外ICQ、中国腾讯企业开发OICQ。基于Java
网络编程强大功效,此次毕业设计使用Java编写一个聊天系统。
通常来说,聊天工具大多数由用户端程序和服务器程序外加服务器端用于存
放用户数据数据库组成,本系统采取用户机/服务器架构模式经过Java提供Soket
类来连接用户机和服务器并使用户机和服务器之间相互通信,因为聊天是多点对
多点而Java提供多线程功效用多线程可完成多点对多点聊天,数据库管理系统用
SQLServer完成并经过JDBOODBC桥访问数据库。
本系统建立在JAVA平台上,系统设计使用了面向对象技术和面向对象设计标
准。系统采取C/S结构,用户端和用户端和用户端和服务器端之间经过Socket
传送消息。使用JAVA语言编写,开发工具采取Eclipse。服务器端设计和实现过
程中,采取了多线程技术,能够在单个程序当口同时运行多个不一样线程,实施
不一样任务。大大增强了程序对服务器资源利用。
聊天系统完成后将可进行多人对多人聊天,对好友进行添加、删除,对新用
户注册,发送消息、接收消息等等功效。
关键词:多线程;用户机/服务器;JAVA;Socket;Eclipse;TCP/IP
目录
JAVA程序课程设计任务书................................错误!未定义书签。
摘要...................................................错误!未定义书签。
目录..................................................错误!未定义书签。
第1章引言............................................错误!未定义书签。
1.1背景..............................................错误!未定义书签。
1.2课程设计内容.....................................错误!未定义书签。
1.3任务分工.........................................错误!未定义书签。
第2章聊天室系统......................................错误!未定义书签。
2.1聊天室系统概述....................................错误!未定义书签。
2.1.1聊天室系统定义...........................错误!未定义书签。
2.1.2聊天室系统任务及目标.....................错误!未定义书签。
2.2关键聊天室系统介绍...............................错误!未定义书签。
2.3本章小结..........................................错误!未定义书签。
第3章聊天室系统设计..................................错误!未定义书签。
3.1系统需求分析.....................................错误!未定义书签。
3.2系统开发及运行环境...............................错误!未定义书签。
3.3系统关键功效要求.................................错误!未定义书签。
3.4系统模块化分析...................................错误!未定义书签。
3.4.1聊天室系统总体结构.......................错误!未定义书签。
3.4.2聊天室系统各模块介绍.....................错误!未定义书签。
3.5系统数据流图.....................................错误!未定义书签。
3.6本章小结.........................................错误!未定义书签。
第4章系统具体实现....................................错误!未定义书签。
4.1界面设计.........................................错误!未定义书签。
4.1.1服务器开启界面图.........................错误!未定义书签。
4.1.2服务器开启成功界面图.....................错误!未定义书签。
4.13用........................................户端界面图...............................错误!未定义书签。
4.L4用........................................户设置界面图.............................错误!未定义书签。
4.1.5用户成功登录界面图.......................错误!未定义书签。
4.1.6两人私聊界面图...........................错误!未定义书签。
4L7多人群聊界面图...........................错误!未定义书签。
4.2程序设计及调试运行...............................错误!未定义书签。
4.2.1程序调试(以服务器为例)................错误!未定义书签。
4.2.2JCreator.................................错误!未定义书签。
4.3本章小结.........................................错误!未定义书签。
第5章结束语..........................................错误!未定义书签。
致谢...................................................错误!未定义书签。
附录源代码...........................................错误!未定义书签.
第1章引言
1.1背景
当今主流聊天工含有QQ,ICQ,MSNMessenger,YahooMessenger等,中国
最热门当属QQ,腾讯QQ(OTCQ)是由深圳市腾讯计算机系统企业开发,基于
Internet即时寻呼软件。您能够使用QQ和好友用户进行交流,信息即时发送,
即时回复,收发立即、功效全方面。另外QQ还含有BP机网上寻呼、聊天室、传
输文件、语音邮件、手机短讯服务等功效,QQ不仅仅是虚拟网络寻呼机,更可和
传统无线寻呼网、GSV移动电话短消息系统互联,现在QQ和全国多家寻呼台、移
动通信企业有业务合作。是中国不可多得汉字网络寻呼机。QQ支持显示好友在线
信息、即时传送信息、即时交谈、即时发送文件和网址。QQ能够在Win95/98/NT/
操作系统下运行,是十分灵活网络寻呼工具。它会自动检验您是否已联网,假如
您电脑已连入Internet,能够搜索网友、显示在线网友,能够依据QQ号、昵称、
姓名、email地址等关键词来查找,找到后可加入到通讯录中。当您通讯录中网
友在线时,QQ中好友头像就会显示在线,依据提醒就能够发送信息,假如对方登
记了寻呼机或开通了GSM手机短消息,即使离线了,您也可立即将信息传输给您
好友。
即使以上这些软件是无偿,而且功效越来越强大。不过它们唯一不足就是必
需要联网或下载到它们服务端,要不然是没法脱离Intenet使用。为了能在一个
没有连接到Intenet局域网使用聊天工具,那就必需要有服务器端。
本系统就是包含服务器端和用户端,能够在局域网聊天一个工具。
1.2课程设计内容
实现是局域网中聊天功效,运行服务程序后,服务器创建成功,然后
使服务器对某一个设定端口处于监听状态,当有用户端请求建立连接时,服
务器就可接收请求,建立连接!这么服务那和用户端就可相互发送消息,实
现聊天功效!
系统功效要求:
A.服务器端关键功效以下:
L在特定端口上进行侦听,等候用户端连接。
2.用户能够配置服务器端侦听端口,默认端口为8888o
3.向已经连接到服务器端用户发送系统消息。
4.统计在线人数。
5.当停止服务时,断开全部用户连接。
B.用户端关键功效以下:
1.连接到已经开启聊天服务服务器端。
2.用户能够配置要连接服务器端IP地址和端口号。
3.用户能够配置连接后显示用户名。
4.当服务器端开启话,用户能够随时登录和注销。
5.用户能够向全部些人或某一个人发送消息
1.3任务分工
第2章聊天室系统
2.1聊天室系统概述
聊天室是一个基于互联网即时交流系统,最初是ICQ,也称网络寻呼机。这
类软件使得大家能够利用连上INTERNET网电脑用户能够随时跟另外一个在线网
民交谈,甚至能够经过视频看到对方适时图像。使大家无须担心昂贵话费而畅快
交流,并工作、交流两不误。
2.1.1聊天室系统定义
聊天时系统是经过即时通讯技术来实现在线聊天、交流软件。现在有2种架
构形式,1、一个是C/S架构,采取用户端/服务器形式,用户使用过程中需要下
载安装用户端软件,经典代表有:QQ、baiduHI、SkypeQQVSGU、Gtalk、
新浪UC、MSN等;2、采取B/S架构,即浏览器/服务端形式,这种形式即时通
讯软件,直接借助互联网为媒介、用户端无需安装任何软件,既能够体验服务器
端进行沟通对话,通常利用在电子商务网站服务商,经典代表有Websitelive、
53KF、live8()()等。
2.1.2聊天室系统任务及目标
本系统关键经过用户端,服务器端来表现聊天系统基础功效。
(1)服务器端
1.处理用户注册
2.处理用户登录
3.处理用户发送信息,服务器监控聊天内容,服务器过滤非法内容
4.处理用户得到信息
5.处理用户退出
8.服务器踢人,
9.保留服务器口志。
10.保留用户聊天信息。
(2)用户端
1.用户注册界面及结果
2.用户登录界面及结果
3.用户发送信息界面及结果
4.用户得到信息界面及结果
5.用户退出界面及结果
2.2关键聊天室系统介绍
现在中国外做聊天系统企业很多,产品也琳琅满目,中国有诸如腾讯QQ、
新浪UC、网易泡泡等,国外有著名MSN(新版更名为LiveMessenger)和跨平
台Gaim等。本人取最具代表性QQ和MSN进行了部分研究,作为我开发聊天系
统准备。
腾讯无疑是中国即时通讯市场霸主,自从99年进入即时通讯领域并快速占市
场以后,其在中国用户数量一直高居榜首,即使近几年面对微软MSN强大攻势,
腾讯QQ时常拥有率仍然稳步增加。腾讯成功和其对QQ不停创新和完善是分不
开。
参考了很多网络上资料,和自己经过观察腾讯QQ运行时多种细节。能够确
定腾讯QQ是以多服务器提供服务、服务潜总控用户端、用户端之间UDP直连通
信.而且在两个用户端之间不能建立直连情况二,才由服务器进行中转通信.
其模型图1-1
Serveri
Scrvcr2
图1-1腾讯QQ服务器-用户端模型1
和腾讯QQ不一样,微软MSNMessenger只使用了TCP作为传输层通信协
议,全部用户端和服务器进行连接,然后经过和服务器TCP连接进行中转通信。
其模型图1-2
图1-2MSN服务器-用户端模型2
腾讯使用模型中,服务器关键处理用户端多种状态控制,能够极大减轻服务
器处理压力,但其内部协议和实现复杂度全部较高。而MSNMessenger全部数据
全部要经过服务器,服务器压力可想而知(难怪平时极少见到使用MSN进行语
音视频聊天)。
2.3本章小结
这一章介绍了目前聊天室系统应该含有功效模块,并提供了市面上比较流行
聊天室系统作为参考。在这一章中,我们能够了解什么是聊天室系统,目前聊天
室系统市场需求,还有•一个聊天室系统应该开发目标。
第3章聊天室系统设计
这一章是聊天室系统设计,从系统需求分析开始,介绍开发环境和用到开发
工具,系统关键功效设计,系统数据步骤图。
3.1系统需求分析
聊天室设计目标:经过做巩固所学Java语言基础知识,促进Java语言编辑基础
功,掌握JDK、JCreator等开发工具利用,拓宽常见类库应用,用JAVA实现基
于C/S模式聊天室系统。
3.2系统开发及运行环境
硬件平台:
□CPU:Pentium2.8GHz以上。
□内存:256MB以上。
软件平台:
□操作系统:WindowsXPo
□运行环境:JDKVersion1.6JCreatoro
3.3系统关键功效要求
本系统针对局域网进行联机聊天。聊天室分为服务器端和用户端两部分,服
务器端程序关键负责侦听用户端发来信息,用户端需要登陆到服务器端才能够实
现正常聊天功效。木系统关键实现以下功效:
服务器:
□在特定端口上进行侦听,等候用户端连接。
□用户能够配置服务器端侦听端口,默认端口为8888。
□向已经连接到服务器端用户发送系统消息。
□统计在线人数。
□当停止服务时,断开全部用户连接。
□系统运行稳定、安全可靠。
□一台主机只能开启一个服务器。
用户端:
□连接到已经开启聊天服务服务器端。
□用户能够配置要连接服务器端1P地址和端口号。
□用户能够配置连接后显示用户名。
□用户能够更改聊天时表情。
□当服务器端开启后,用户能够随时登录和注销。
□用户能够向全部些人或某一个人发送消息。
□系统运行稳定、安全可靠。
□能够默认连接到自己主机开启服务涉。
3.4系统模块化分析
3.4.1聊天室系统总体结构
关键功效框架以下图所表示:
各功效模块实现功效为:
服务器:
端口设置:设置倾听端口号,默认为8888。
开启服务:开启倾听端口,许可用户端连接。
系统消息:服务器开启后能够在聊天室内发送消息。
停止服务:关闭倾听端口,中止全部用户端连接。
退出:关闭服务器。
用户端:
用户设置:设置聊天时显示名称,默认为急忙过客。
连接设置:设置要连接服务器所在主机TP地址和倾听端口o
登录:连接服务器。
发送消息:进行聊天,可单独发送消息给聊天室中一个人。
注销:和服务器断开连接。
退出:关闭用户端。
3.4.2聊天室系统各模块介绍
服务器包含服务、帮助、聊天三大模块,其
中服务模块包含端口设置、开启服务、停止
服务和退出四个小模块
聊天模块能够向聊天室
发送至:斫有人▼内全部些人或个人发送
发送消息:
系统消息或以管理员身
份和其它人聊天
表3/服务器各模块名称功效汇总表
序号模块名基础功效
1端口设置设置倾听端口号,默认为8888。
2开启服务开启倾听端口,许可用户端连接。
3停止服务关闭倾听端口,中止全部用户端连接。
4退出关闭服务器。
5帮助显示各个模块功效及操作方法。
6发送向聊天室内发送系统消息。
-聊天室客户亮用户端包含操作、设置、帮助、聊天四大
____________________-J_____
操作9)设置(C)群助出)模块,其中操作包含用户登录、用户注销
|用户设置连接设置登录性镐||退出|
和退出三个小模块,设置包含用户设置和
连接设置两个小模块聊天模块除含有一般聊天功效外,还能进行聊天时表情选择
发送至:恢有人e表情:微笑地口悄悄话
发送消息4发送
在线用户1人
表3・2用户端各模块名称功效汇总表
序号模块名基础功效
1用户设置设置聊天时显示名称,默认为急忙过客。
2连接设置设置要连接服务港所在主机IP地址和倾听端口。
3用户登录连接到服务器端。
4用户注销和服务器断开连接。
5退出关闭用户端C
6发送发送聊天内容
7悄悄话聊天内容不会被服务器和说话对象以外人看到
3.5系统数据流图
系统数据流图
3.6本章小结
本章是聊天室系统具体设计过程,有具体需求分析、系统功效模块、系统数
据流图。这里我们开始接触聊天室系统开发最初步骤,也是很关键一步。
第4章系统具体实现
界面是系统之间最直接交互界面,界面友好性表现了软件设计质量,并在很
大程度上决定了软件是否成功。
4.1界面设计
4.1.1服务器开启界面图
4.1.2服务器开启成功界面图
-二天三正芳三三______Tm
服务(5群助出)
1口设置启动图务停止服务痼
船务湍已经启动,在888硼口侦听
发诲至:斫有人▼
发送消息:[|发送
4.L3用户端界面图
■»:天空客户建一。卜一1Ml
操作9)设苦(Q箫曲(山
用户设置:连接设式登录lil退出
发送至:18m人卜|表睛:|«^»卜|二肺i活
发送消息:命送
4.1.4用户设置界面图
-麻天空客户场
操作9)设置gttah(H)
用户设舌连拉破看登录才匕|退出)
发送至:叵正]表情:微笑点;▼运
发送消息:送法
4.1.5用户成功登录界面图
-——二.\Q-
操作9)设置&)刘助(W
用户设密传忸设警。录注摘退出
连箔用务01270.018888成功
发送至:所有人▼表侑:|微笑的▼
E阍瑜话
(发送
发诲消息4
在线户1人
4.1.6两人私聊界面图
-,="Q,
金©
iftBlO
-、;,aw笊出傅户。K甚,&IH«X
MW用mo©i网成功―MSftSi?7ooisaascT)
12345601必3心心$力WW・奘0in4”gagg见s
12XX・M蛇贝ROOT12乂弘量巽电!岫303K3GXGX
::|卜|
HBkHMRM«»«i«:「情仙为▼□UM
a*B「炭x
>SM:
him户2人
mw户2人
4.1.7多人群聊界面图
4.2程序设计及调试运行
利用JCreator”一次编写,各处运行”编程优点,按功效模块结构设计菜单,部署
各明细模块工作界面,编写各个模块程序代码,进行编译连接运行,经过反复调
试修改,以达成系统功效要求。这个过程含有大量工作量,应仔细对每个程序细
节进行分析思索、编写程序并调试,做到程序简练清楚,尽可能避免可能潜在程
序错误,并在必需地方加以注释,方便于程序阅读和修改。
4.2.1程序调试(以服务器为例)
importjava.awt.
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing,event.
importjava.net.*;
importjava.io.*;
/*
*聊天服务端主框架类
*/
publicclassChatServerextendsJFrameimplementsActionlastener{
publicstaticiniport=8888;〃服务端侦听端口
ServerSocketserverSocket;//月艮务端Socket
Imageicon;〃程序图标
JComboBoxcombobox;//选择发送消息接收者
JTextAreeimessageShow;〃服务端信息显示
JScrollPanemessageScro11Pane;〃信息显示滚动条
JTcxtFieldshowStatus;〃显示用户连接状态
JLabelsendToLabel,messageLabel;
JTextFieldsysMessage;〃服务端消息发送
JButtonsysMessageButton;//服务端消息发送按钮
L'serLinkListuserLinkList;〃用户链表
//建立菜单栏
JMenuBarjMenuBar=newJMenuBarO;
〃建立菜单组
JMenuserviccMcnu=newJMcnu("服务(V)”);
〃建立菜单项
JMenuItemportItem=newJMenuItem("端口设置(P)”);
JMenuItemstartltem=newJMenuItem("开启服务(S)〃);
JMenuIternstopltcm=newJMenuItcm("停止服务(T)”);
JMenuItemexitltem=newJMenuItem(“退出(X)”);
JMenuhelpMenu=newJMenu("帮助(H)”);
JMenuItemhelpltem=newJMenuItem("帮助(H)”);
〃建立工具栏
JToolBartoolliar=newJToolBar();
〃建立工具栏中按钮组件
JBu11onportSet;//开启服务端侦听
JButtonstartServer;〃开启服务端侦听
JButtonslopServer;〃关闭服务端侦听
JButtonexitButton;〃退出按钮
〃框架大小
DimensionfaceSize=newDimension(400,60C);
ServerListenlistenThread;
JPaneldownPane1;
GridBagLayoutgirdBag;
GridBagConstraintsgirdBagCon;
/**
*服务端结构函数
*/
publicChalServerO{
init();〃初始化程序
〃添加框架关闭事件处理
this.sctDcfaultClosoOpcration(JFramc.EXITONCLOSE);
this,pack();
〃设置框架大小
this.setSize(faceSize);
〃设置运行时窗口位置
DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSizeO;
this.setLocation((int)(screenSize.width-faceSize.getWidthO)/2,
(int)(screenSize.height-faceSize.getHcight())/2);
this.setResizable(false);
this.setTitle("聊天室服务端〃);〃设置标题
〃程序图标
icon=gctlmage("icon.gif");
this.setIcon:mage(icon);〃设置程序图标
show();
〃为服务菜单吧设置热键'V'
serviccMonu.setMncmonic(fV');
〃为端口设置快捷键为c*l+p
portItem.setMnemonic('P');
portItem.setAccelerator(Keystroke.getKeyStroke
(KeyEvent.VK_P,InputEvent.CTRL_MASK));
〃为开启服务快捷键为CEl+S
startItern.setMnemonic('S');
startitem.setAccelerator(Keystroke.getKeyStroke
(KeyEvent.VK_S,InputEvent.CTRLMASK));
〃为端口设置快捷键为ctrl+T
stopitem.setMnemonic('T');
stopitem.setAccelerator(Keystroke.getKeyStroke
(KcyEvent.VK_T,InputEvent.CTRLMASK));
〃为退出设置快捷键为ctrl+x
exititem.setMnemonic('X');
exitltem.setAccelerator(Keystroke.getKeyStroke
(KcyEvent.VK_X,InputEvent.CTRLMASK));
〃为帮助菜单栏设置热键'H'
helpMenu.setMnemonic('H');
〃为帮助设置快捷键为ctrl+p
hclpltcm.setMnemonic('H');
he1pltem.setAccelerator(Keystroke.getKeyStroke
(KeyEvent.VKH,InputEvent.CTRLMASK));
)
/**
*程序初始化函数
*/
publicvoidinit0{
Containercontentpane=getContentPane();
contentPcine.setLayout(newBorderLayout());
〃添加菜单栏
scrviccMcnu.add(portItem);
serviceMenu.add(startItem);
serviceMenu.add(stopitem);
serviceMenu.add(exitItem);
JMcnuBar.add(scrviccMcnu);
helpMenu.add(heIpItem);
JMenuBar.add(helpMenu);
setJMenuBar(jMenuBar);
〃初始化按钮
portSet=newJButton(〃端口设置〃);
startServer=newJButton("开启服务”);
stopServer=newJButton("停止服务”);
exitButton=newJButton("退出”);
〃将按钮添加到工具栏
toolBar.add(portSet);
toolBar.addSeparator();〃添加分隔栏
toolBar.add(startServer);
toolbar,add(stopServer);
toolBar.addSeparator();〃添加分隔栏
toolBar.add(exitButton);
contentpane,add(toolBar,BorderLayout.NCRTII);
〃初始时,令停止服务按钮不可用
stopServer.setEnabled(false);
stopitem.setEnabled(false);
〃为菜单栏添加事件监听
portItem.addActionListener(this);
startltem.addActionListener(this);
stopitem.addActionListener(this);
exititem.addActionListener(this);
helpitem.addActionListener(this);
〃添加按钮事件侦听
portSet.addActionListener(this);
startServer.addActionListener(this);
stopServer.addActionListener(this);
exitButton.addActionListener(this);
combobox=newJComboBox();
cornbobox.insertItemAt("全部些人",0);
combobox.setSelectedlndex(0);
messageShow=newJTextAreaO;
mcssagcShow.sctEditablc(falsc);
〃添加滚动条
messageScrolIPane=newJScrolIPane(messageShow,
JScrollPane.VERTICALSCROLLBARAS.NEEDED,
JScrolIPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
messageScrolPane.setPreferredSize(newI)imension(400,400));
messageScrolTane.revalidate();
showStatus=newJTextField(35);
showStatus.setEditable(false);
sysMessage=newJTextField(24);
sysMessage.setEnabled(false);
sysMessageButton=newJButtonO;
sysMessageButton.setText("发送”);
〃添加系统消息事件侦听
sysMessage.addActionListener(this);
sysMessageButton.addActionListcner(this);
sendToLabel=newJLabel("发送至:”);
messageLabel=newJLabel("发送消息:”);
downPane1=newJPanel();
girdBag=nevGridBagLayout();
downPane1.setLayout(girdBag);
girdBagCon=newGridBagConstraintsO;
girdBagCon.gridx=0;
girdBagCon.gridy=0;
girdBagCon.gridwidth=3;
girdBcigCon.gridheight=2;
girdBagCon.ipadx=5;
girdBagCon.ipady=5;
JLabelnone=newJLabel("");
girdBag.setConstraints(none,girdBagCon);
downPane1.add(none);
girdBagCon=newGridBagConstraints();
girdBagCon.gridx=0;
girdBagCon.gridy=2;
girdBagCon.insets=newInsetsCl,0,0,0);
girdBagCon.ipadx=5;
girdBagCon.ipady=5;
girdBag.setConstraints(sendToLabel,girdBagCon);
downPane1.add(sendToLabel);
girdBagCon=newGridBagConstraints();
girdBagCon.gridx=1;
girdBagCon.gridy=2;
girdBagCon.anchor=GridBagConstraints.LINESTART;
girdBag.setConstraints(combobox,girdBagCon);
downPane1.add(combobox);
girdBagCon=newGridBagConstraints();
girdBagCon.gridx=0;
girdBagCon.gridy=3;
girdBag.setConstraints(messageLabel,girdBagCon);
downPane1.add(messageLabel);
girdBagCon=newGridBagConstraintsO;
girdBagCon.gridx=1;
girdBcigCon.gridy=3;
girdBag.setConstraints(sysMessage,girdBagCon);
downPane1.add(sysMcssage);
girdBagCon=newGridBagConstraintsO;
girdBagCon.gridx=2;
girdBagCon.gridy=3;
girdBag.setConstraints(sysMessageButton,girdBagCon);
downPane1.add(sysMessageButton);
girdBagCon=newGridBagConstraintsO;
girdBagCon.gridx=0;
girdBagCon.gridy=4;
girdBagCon.gridwidth=3;
girdBag.setConstraints(showStatus,girdBagCon);
downPane1.add(showStatus);
contentpane.add(messageScrolIPane,BorderLayout.CENTER);
contentPcine.add(downPane1,BorderLayout.SOUTH);
〃关闭程序时操作
this.addWindowListcncr(
newWindowAdapter(){
publicvoidwindowC1osing(WindcwEvente){
stopService();
System,exit(0);
)
1
);
)
/**
*事件处理
*/
publicvoidactionPerformed(ActionEvente){
Objectobj=e.getSourceO;
if(obj==startServer||obj==startitem){//开启服务端
startService();
}
elseif(obj=stopServer||obj==stopItem){〃停止服务端
intj=JOptionPane.showConfirmDia1og(
this,“真停止服务吗?",〃停止服务”,
JOptionPane.YESJ)PTION,JOptionFane.QUESTION_MESSAGE);
if(j==JOptionPane.YES_OPTION){
stopService0;
)
)
elseif(obj==portSet||obj==portitem){〃端口设置
〃调出端口设置对话框
PortConfportConf=newPortConf(this);
portConf.show();
)
elseif(obj==exitButton|Iobj==exitItem){〃退出程序
intj=JOptionPane.showConfirmDialog(
this,“真要退出吗?",〃退出”,
JOptionPane.YESOPTION,JOptionFane.QUESTIONMESSAGE);
if(j==JOptionPane.YES_OPTION){
stopScrviceO;
System,exit(0);
)
)
elseif(obj==he1pitcm){//菜单栏中帮助
〃调出帮助对话框
HelphelpDialog=newHelp(this);
helpDialog.show();
}
elseif(obj=sysMessage|obj==sysMessageliutton){//发送系统消息
sendSystemMessage0;
)
)
/**
*开启服务端
*/
publicvoidstartService(){
try(
servcrSocket=newScrvcrSockct(port,10);
messageShow.append("服务端已经开启,在“+port+”端口侦听...\n");
startServer.setEnabled(false);
startlten.setEnabled(false);
portSet.setEnabled(false);
portltem.setEnabled(false);
stopServer.setEnabled(true);
stopitem.setEnabled(true);
sysMossagc.setEnabled(true);
}
catch(Exceptione){
//System.out.println(e);
)
userLinkList=newUserlJnkList();
listenThread=newServerListen(serverSocket,combobox,
messagoShow,showStatus,userLinkList);
1istenThread.start();
)
/**
*关闭服务端
*/
4.2.2JCreator
Jcreator是一个用于Java程序设计集成开发环境,含有编辑、调试、运行Java程
序功效。目前最新版本是Jcreato「3.10,它又分为LE和Pro版本。LE版本功效上
受到部分限制,是无偿版本。Pro版本功效最全,但这个版本是一个共享软件。
这个软件比较小巧,对硬件要求不是很高,完全用C++写,速度快、效率高。含
有语法着色、代码自动完成、代码参数提醒、工程向导、类向导等功效。第一次
开启时提醒设置JavaJDK主目录及JDKJavaDoc目录,软件自动设置好类路径、
编译器及解释器路径,还能够在帮助菜单中使用JDKHelpo
4.3本章小结
本章介绍了系统具体实现和部分关键代码,其中包含用户登录所要用到函数
和主界面框架设计。
第5章结束语
本文讨论了怎样利用JAVA技术开发聊天室系统,基础满足了结构化、界面
友好、速度快、安全性和稳定性等特点。
系统着重研究并实现了网络应用部分。依据实现情况看,含有较友好聊天界
面生成效果,和流畅网络通信效果。生成聊天室能够达成基础聊天要求,含有较
高研究价值。
系统含有现在聊天室基础功效:包含支持语气选择,支持私聊,能够给全部
聊友发公共信息,含有速度快,高稳定性,占用系统资源少,用户界面友好等特
点。
经过毕业设计,发觉自己在理论研究和实际工作能力等方面全部得到了提
升,受益匪浅,同时在老师指导利课题组同学共同帮助下,立即总结研究结果,
这些无疑会对我以后工作和学习带来很大帮助。
致谢
附录源代码
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.event.*;
import.*;
importjava.io.*;
/*
*聊天服务端主框架类
*/
publicclassChatServerextendsJFrameimplementsActionListenerl
publicsialicintport=8888;〃服务端侦听端口
ServerSocketserverSocset;〃服务端Socket
Image沁on;〃程序图标
JComboBoxcombobox;〃选择发送消息接收者
JTcxtArcamessageShow;〃服务端信息显示
JScrollPanemessageScrollPaneJ/信息显示滚动条
JTextFieldshowSlatus;〃显示用户连接状态
JLabelsendToLabel.messageLabel;
JTextFieldsysMessage::/服务端消息发送
JBultonsysMessageBullon;〃服务端消息发送按钮
UserLinkListuserLinkList;〃用户链表
〃建立菜单栏
JMenuBarjMenuBar=lewJMenuBar();
〃建立菜单组
JMenuserviceMenu=newJMenu("服务(V)”);
〃建立菜单项
JMenuItemportItem=newJMenuItem("端口设置(P)”);
JMenuItenisiartltem=newJMenuItem("开启服务(S)”);
JMenuItemstopltem=newJMenuIiein("停止服务(T)");
JMenuItemcxiiliefn=ncwJMcnii【【cni("退出(X)");
JMcnuhelpMenu=ncwJMenu("帮助(H)");
JMenullemhelpltem=ncwJMenuItem("帮助(H)");
〃建立工具栏
JToolBartoolBar=newJToolBarQ;
〃建立工具栏中按钮组件
JButionponSet;〃咒:启服务端彳贞明:
JButtonstartServer:〃开启服务端侦听
JButtonsiopServer;〃关闭服务端侦听
JBulloncxilBullon;〃退出按钮
〃框架大小
DimensionfaccSizc=newDimcnsion(4()0.60());
ServerListenlistenThread;
JPaneldownPanel;
GridBagLayoutgirdBag;
GridBagConstraintsgirdBagCon;
/*»
,服务端结构函数
*/
publicChatServer(){
init();〃初始化程序
〃添加框架关闭事件处理
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
〃设置框架大小
this.setSize(faceSize);
〃设置运行时窗口位置
DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((int)(screenSize.width-faceSize.get\Vidth())/2,
(int)(screenSize.height-faceSize.getHeight())/2);
this.setResizable(false);
this.selTitle("聊天室服务端)〃设置标题
〃程序图标
icon=gethnage("icon.gif');
this.setlconlmage(icon);〃设置程序图标
show。;
〃为服务菜单栏设理热键V
serviccMenu.sctMnenionic('V');
〃为端口设置快提键为ctrl+p
portitem.sctMncir.onic('P1);
portltein.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P.InputEvent.CTRL_MASK));
〃为开启服务快捷键为cirl+s
startitem.setMnemonic('S');
start!tem.setAcceisrator(KeyStroke.getKeyStroke(KeyEvent.VK_S.InputEvent.CTRL_MASK));
〃为端口设置快捷键为ciH+T
siophcm.setMnemonic(T);
stopitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T,InputEvent.CTRL_MASK));
〃为退出设置快捷键为ctrl+x
exitlteni.setMnemonic('X');
exitltem.setAccelerator(KeyStroke.getKeyStroke(KeyEvenl.VK_X,InpulEvent.CTRL_MASK));
〃为帮助菜单栏设置热键H
helpMenu.setMnemonic('H');
〃为帮助设置快捷键为cirl+p
helpitem.setMnemonic('H');
helpitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,InputEvent.CTRL_MAS<));
*程序初始化函数
»/
publicvoidinit(){
ContainercontentPane=gelCon(entPane();
contentPane.sclLayout(newBorderLayouK));
〃添加菜单栏
serviceMenu.add(portitem);
serviccMcnu.add(startitem);
scniceMcnu.add(slopllem);
scrviccMcnu.add<cxitltcm);
jMenuBar.add(serviceMenu);
helpMenu.add(helpltem);
jMenuBar.add(helpMenu);
setJMenuBar(jMenuBar);
〃初始化按钮
portSet=newJBiUon("端口设置");
startServer=newJButton("开启服务");
stopServer=newJButton("停止服务");
cxitBulton=newJBullon("退出");
〃将按钮添加到工具栏
toolBar.add(portSet);
toolBar.addSepara(or()^/i^S加分隔栏
toolBar.add
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 郑州房票协议书
- 资金入股协议书
- 签订结算协议书
- 找人办工作合同协议书
- 政府街道办调解协议书
- 电脑劳务协议书
- 贷款还款协议书
- 小防控单元联防协议书
- 现货代理协议书
- 租地续租协议书
- 2025年传统建筑行业的智能门窗技术
- 2025版亚马逊FBA物流仓储及电商运营服务合同6篇
- 幕墙工程施工方案及述标文件
- 《生鲜农产品供应链中双渠道模式合作演化博弈实证研究》17000字
- 湖北省武汉市华师一附中2025届中考生物押题试卷含解析
- 竣工结算审计服务投标方案(2024修订版)(技术方案)
- 某药业公司管理制度汇编
- 《佛与保险》课件
- 第7课《全球航路的开辟和欧洲早期殖民扩张》中职高一下学期高教版(2023)世界历史全一册
- 小学语文跨学科整合教学方案
- 高空作业规程及标准
评论
0/150
提交评论