JAVA聊天室附完整代码Word文件下载.docx

上传人:b****4 文档编号:7241851 上传时间:2023-05-08 格式:DOCX 页数:35 大小:255.08KB
下载 相关 举报
JAVA聊天室附完整代码Word文件下载.docx_第1页
第1页 / 共35页
JAVA聊天室附完整代码Word文件下载.docx_第2页
第2页 / 共35页
JAVA聊天室附完整代码Word文件下载.docx_第3页
第3页 / 共35页
JAVA聊天室附完整代码Word文件下载.docx_第4页
第4页 / 共35页
JAVA聊天室附完整代码Word文件下载.docx_第5页
第5页 / 共35页
JAVA聊天室附完整代码Word文件下载.docx_第6页
第6页 / 共35页
JAVA聊天室附完整代码Word文件下载.docx_第7页
第7页 / 共35页
JAVA聊天室附完整代码Word文件下载.docx_第8页
第8页 / 共35页
JAVA聊天室附完整代码Word文件下载.docx_第9页
第9页 / 共35页
JAVA聊天室附完整代码Word文件下载.docx_第10页
第10页 / 共35页
JAVA聊天室附完整代码Word文件下载.docx_第11页
第11页 / 共35页
JAVA聊天室附完整代码Word文件下载.docx_第12页
第12页 / 共35页
JAVA聊天室附完整代码Word文件下载.docx_第13页
第13页 / 共35页
JAVA聊天室附完整代码Word文件下载.docx_第14页
第14页 / 共35页
JAVA聊天室附完整代码Word文件下载.docx_第15页
第15页 / 共35页
JAVA聊天室附完整代码Word文件下载.docx_第16页
第16页 / 共35页
JAVA聊天室附完整代码Word文件下载.docx_第17页
第17页 / 共35页
JAVA聊天室附完整代码Word文件下载.docx_第18页
第18页 / 共35页
JAVA聊天室附完整代码Word文件下载.docx_第19页
第19页 / 共35页
JAVA聊天室附完整代码Word文件下载.docx_第20页
第20页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

JAVA聊天室附完整代码Word文件下载.docx

《JAVA聊天室附完整代码Word文件下载.docx》由会员分享,可在线阅读,更多相关《JAVA聊天室附完整代码Word文件下载.docx(35页珍藏版)》请在冰点文库上搜索。

JAVA聊天室附完整代码Word文件下载.docx

用户可以选择与聊天室的在线用户列表中的其他用户聊天。

双方的聊天记录对于聊天室的其他用户是不可见的。

(5)聊天心情:

用户在聊天的过程中可以选择相应的心情来表达自己的情感。

(6)系统消息:

服务端正常运行的过程中,在聊天室的每一个用户都能接收服务器端发送的信息提示信息。

(7)用户的状态.

每一个客户端用户都可以实时看到目前其他在线用户的状态。

(8)用户注销:

用户可以注销自己的账号,并重新登记登录名和地址。

(9)用户退出:

用户可以在正常情况下退出聊天室。

(10)服务端控制:

只有在服务端开启的情况下,用户才能登陆成功和聊天;

用户设置的地址端口也必须与服务端的侦听端口一致,否则不能登录。

2、模块描述

本聊天室分为聊天室服务端和聊天室客户端,服务端与客户端之间通过套接口Socket(TCP)连接。

在java中使用套接口相当简单,JavaAPI为处理套接口的通信提供了一个类使得编写网络应用程序相对容易.服务器采用多线程以满足多用户的请求,通过JDBC与后台数据库连接,并通过创建一个ServerSocket对象来监听来自客户的连接请求,默认IP地址为:

默认端口为8888。

(1)聊天室服务端模块图:

 

端口服务:

输入要侦听的端口,默认为8888;

启动服务:

启动服务器,并开始在设置的端口中侦听,客户端用户可以登录并开始聊天;

停止服务:

关闭服务器,侦听结束。

客户端用户不能再聊天;

发送系统消息:

服务器端给所有人或者个别用户发送消息。

消息显示:

可以显示所有用户的聊天记录,和上线、下线信息。

退出服务器:

退出程序,并停止服务;

(2)聊天室客户端模块图:

用户设置:

用户可以设置自己的用户名进行聊天;

连接设置:

用户可以设置自己的服务器的IP地址和端口号,默认的连接地址为:

8888;

用户登录:

只能在聊天室服务端已开启的情况下,用户才能登录,用户登录之后才能开始聊天,登录后不能再修改用户设置和连接设置;

用户注销:

退出聊天,可以继续修改用户设置和连接设置;

发送和接收聊天信息:

用户可以给所有人或者个别用户发送信息,并能看到其他用户发送给自己或所有人的消息;

退出:

关闭所有聊天并退出客户端。

(3)流程图

设置侦听端口

默认端口:

8888

设置用户名

设置IP地址和端口

四、详细设计

1、聊天室服务器端设计:

聊天室服务端主要包括7个文件,它们的功能如下:

(1):

包含名为ChatServer的public类,其主要功能为定义服务器端的界面,添加事件侦听与事件处理。

调用ServerListen类来实现服务端用户上线与下线的侦听,调用ServerReceive类来实现服务器端的消息的收发。

(2):

该类实现服务端用户上线与下线的侦听。

该类对用户上线下线的侦听是通过调用用户链表类(UserLinkList)来实现的,当用户上线与下线情况发生变化时,该类会对主类的界面进行相应的修改。

(3):

该类是实现服务器端的消息的收发的类。

该类分别定义了向某用户及所有人发送消息的方法,发送的消息会显示在主界面类的界面上。

(4):

该类继承自JDialog,是用户对服务器端侦听端口进行修改配置的类。

(5):

用户链表的节点类,定义了链表中的用户。

该类与前面所讲的链表节点Node类的功能相当。

(6):

用户链表节点的具体实现类。

该类通过构造函数构造用户链表,定义了添加用户,删除用户、返回用户数、根据用户名查找用户、根据索引查找用户这5个方法。

(7):

服务端程序的帮助类。

2、聊天室客户端设计:

聊天室客户端主要包括5个文件,它们的功能如下:

(1):

包含名为ChatClient的public类,其主要功能为定义客户端的界面,添加事件侦听与事件处理。

该类定义了Connect()与DisConnect()方法实现与服务器的连接与断开连接。

当登录到指定的服务器时,调用ClientReceive类实现消息收发,同时该类还定义了SendMessage()方法来向其他用户发送带有表情的消息或者悄悄话。

该类是实现服务器端与客户端消息收发的类。

该类继承自JDialog,是用户对所要连接的服务器IP及侦听端口进行修改配置的类。

该类继承自JDialog,是用户对连接到服务器所显示的用户名进行修改配置的类。

客户端程序的帮助类。

五、测试数据及其结果分析

1、首先运行ChatServer工程文件,会出现如下画面

2、选择端口设置,可以设置您要侦听的端口号,不设置将默认端口号为8888;

3、选择启动服务,服务器开始在您刚才设置的端口中侦听;

4、运行ChatClient工程文件,打开如下画面

5、选择用户设置可以设置自己的登录名

6、选择连接设置可以设置您的IP地址和端口号

7、选择登录进入聊天室并可以开始跟所有人或者个别其他用户聊天,其中可以选择心情等;

8、在服务端也可以选择给所有人或者个别用户发送消息;

注意:

客户端只有在服务端开启的情况下才能正常聊天。

9、多人聊天的服务器端与客户端情况

代码如下:

packageliaotian;

/**

*用户链表

*/

publicclassUserLinkList{

Noderoot;

Nodepointer;

intcount;

/**

*构造用户链表

publicUserLinkList(){

root=newNode();

=null;

pointer=null;

count=0;

}

*添加用户

publicvoidaddUser(Noden){

pointer=root;

while!

=null){

pointer=;

}

=n;

count++;

*删除用户

publicvoiddelUser(Noden){

if==n){

=;

count--;

break;

}

*返回用户数

publicintgetCount(){

returncount;

*根据用户名查找用户

publicNodefindUser(Stringusername){

if(count==0)returnnull;

ifreturnpointer;

returnnull;

*根据索引查找用户

publicNodefindUser(intindex){

if(count==0){

returnnull;

if(index<

0){

inti=0;

while(i<

index+1){

if!

pointer=;

else{

returnnull;

i++;

returnpointer;

}

import.*;

/*

*聊天客户端的主框架类

publicclassChatClientextendsJFrameimplementsActionListener{

*

privatestaticfinallongserialVersionUID=1L;

Stringip="

"

;

etImage("

face/"

));

etScreenSize();

((int)-())/2,

(int)-())/2);

(false);

("

聊天室客户端"

);

.\n"

type=1;

.\n"

type=0;

oString();

Stringstatus="

if()){

status="

悄悄话"

Stringaction=().toString();

Stringmessage=();

return;

try{

("

聊天信息"

();

(toSomebody);

(action);

(message);

catch(Exceptione){

;

publicclassChatServerextendsJFrameimplementsActionListener{

publicstaticintport=8888;

etScreenSize();

((int)(int)(false);

("

Á

Ä

Ì

ì

Ê

Ò

·

þ

Î

ñ

Ë

publicvoidinit(){

ContainercontentPane=getContentPane();

(newBorderLayout());

(portItem);

(startItem);

();

(stopItem);

(exitItem);

(serviceMenu);

(helpItem);

(helpMenu);

setJMenuBar(jMenuBar);

(false);

stopServer.setEnabled(true);

stopItem.setEnabled(true);

(true);

lose();

i++;

stopServer.setEnabled(false);

stopItem.setEnabled(false);

Ñ

¾

Ø

±

Õ

\n"

ù

Ó

Ð

È

catch(Exceptione){

oString();

Stringmessage=()+"

(message);

;

*聊天客户端消息收发类

publicclassClientReceiveextendsThread{

privateJComboBoxcombobox;

privateJTextAreatextarea;

Socketsocket;

ObjectOutputStreamoutput;

ObjectInputStreaminput;

JTextFieldshowStatus;

publicClientReceive(Socketsocket,ObjectOutputStreamoutput,

ObjectInputStreaminput,JComboBoxcombobox,JTextAreatextarea,JTextFieldshowStatus){

=socket;

=output;

=input;

=combobox;

=textarea;

=showStatus;

publicvoidrun(){

while(!

()){

try{

Stringtype=(String)();

if("

系统信息"

)){

Stringsysmsg=(String)();

("

系统信息:

"

+sysmsg);

}

elseif("

服务关闭"

();

服务器已关闭!

break;

Stringmessage=(String)();

(message);

用户列表"

Stringuserlist=(String)();

Stringusernames[]=("

inti=0;

所有人"

while(i<

{

(usernames[i]);

i++;

}

(0);

("

在线用户"

++"

人"

catch(Exceptione){

}

*生成连接信息输入的对话框

*让用户输入连接服务器的IP和端口

publicclassConnectConfextendsJDialog{

JPanelpanelUserConf=newJPanel();

JButtonsave=newJButton();

JButtoncancel=newJButton();

JLabelDLGINFO=newJLabel("

默认连接设置为"

JPanelpanelSave=newJPanel();

JLabelmessage=newJLabel();

StringuserInputIp;

intuserInputPort;

JTextFieldinputIp;

JTextFieldinputPort;

publicConnectConf(JFrameframe,Stringip,intport){

super(frame,true);

=ip;

=port;

try{

jbInit();

catch(Exceptione){

((int)-400)/2+50,

(int)-600)/2+150);

privatevoidjbInit()throwsException{

(newDimension(300,130));

连接设置"

请输入服务器的IP地址:

inputIp=newJTextField(10);

(userInputIp);

inputPort=newJTextField(4);

+userInputPort);

保存"

取消"

(newGridLayout(2,2,1,1));

(inputIp);

(newJLabel("

请输入服务器的端口号:

(inputPort);

(newLabel("

(save);

(cancel);

ContainercontentPane=getContentPane();

(newBorderLayout());

(panelUserConf,;

(DLGINFO,;

(panelSave,;

import*生成设置对话框的类

publicclassHelpextendsJDialog{

*

privatestaticfinallongserialVersionUID=416L;

JPaneltitlePanel=newJPanel();

JPanelcontentPanel=newJPanel();

JPanelclosePanel=newJPanel();

JButtonclose=newJButton();

JLabeltitle=newJLabel("

聊天室服务端帮助"

JTextAreahelp=newJTextArea();

Colorbg=newColor(255,255,255);

publicHelp(JFrameframe){

((int)-400)/2,

(int)-320)/2);

(newDimension(400,200));

帮助"

(bg);

1、设置服务端的侦听端口(默认端口为8888)。

+

"

2、点击启动服务按钮便可在指定的端口启动服务。

3、选择需要接受消息的用户,在消息栏中写入消息,之后便可发送消息。

4、信息状态栏中显示服务器当前的启动与停止状态、"

用户发送的消息和\n服务器端发送的系统消息。

(title);

(help);

(close);

(titlePanel,;

(contentPanel,;

(closePanel,;

关闭"

*生成设置对话框的类

publicclassHelp1extendsJDialog{

JB

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2