java实现聊天室功能包含全部代码有界面Word格式.docx

上传人:b****4 文档编号:16647238 上传时间:2022-11-25 格式:DOCX 页数:23 大小:20.82KB
下载 相关 举报
java实现聊天室功能包含全部代码有界面Word格式.docx_第1页
第1页 / 共23页
java实现聊天室功能包含全部代码有界面Word格式.docx_第2页
第2页 / 共23页
java实现聊天室功能包含全部代码有界面Word格式.docx_第3页
第3页 / 共23页
java实现聊天室功能包含全部代码有界面Word格式.docx_第4页
第4页 / 共23页
java实现聊天室功能包含全部代码有界面Word格式.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

java实现聊天室功能包含全部代码有界面Word格式.docx

《java实现聊天室功能包含全部代码有界面Word格式.docx》由会员分享,可在线阅读,更多相关《java实现聊天室功能包含全部代码有界面Word格式.docx(23页珍藏版)》请在冰豆网上搜索。

java实现聊天室功能包含全部代码有界面Word格式.docx

{

Socketclient=server.accept();

//接收客户端线程

PrintWriterwriter=newPrintWriter(client.getOutputStream());

list.add(writer);

Threadt=newThread(newChat(client));

t.start();

}

}catch(Exceptionex){

ex.printStackTrace();

}

publicstaticvoidmain(String[]args)

newServer(user).getServer();

classChatimplementsRunnable

Socketsocket;

privateBufferedReaderbr;

privateStringmsg;

privateStringmssg="

"

;

publicChat(Socketsocket)

{

try{

this.socket=socket;

}catch(Exceptionex){

ex.printStackTrace();

publicvoidrun()

br=newBufferedReader(newInputStreamReader(socket.getInputStream()));

while((msg=br.readLine())!

=null)

{

if(msg.equals("

1008611"

))//匹配字符串显示好友列表

{

msg=br.readLine();

String[]st=msg.split("

:

//将用户信息跟消息分隔开

uu=newUser(st[0],st[1],socket);

//将用户信息添加到User对象中

list1.add(uu);

//将对象添加到用户集合

Iterator<

it=Server.list1.iterator();

//遍历用户集合

while(it.hasNext())

{

Useruse=it.next();

msg=use.getName()+"

("

+use.getSex()+"

):

mssg+=msg;

//将所有的用户信息连接成一个字符串

}

sendMessage("

//显示好友列表匹配标识

sendMessage(mssg);

//群发消息

elseif(msg.equals("

10010"

))//显示说话消息

System.out.println(msg);

//显示说话信息匹配标识

sendMessage(msg);

}

10086"

))//显示进入聊天室

//进入聊天室匹配标识

841163574"

))//私聊

String[]rt=msg.split("

1072416535"

//把传进来的用户信息跟说话内容分开

System.out.println(rt[1]);

//在服务器端显示说话内容

String[]tg=rt[0].split("

//因为是私聊,传过来两个用户的用户信息,这句作用是再把两个用户信息分开

iu=Server.list1.iterator();

while(iu.hasNext())

Userse=iu.next();

if(tg[1].equals(se.getName()+"

+se.getSex()+"

)"

))//如果传进来的用户信息跟集合中的用户信息吻合

{

try{

PrintWriterpwriter=newPrintWriter(se.getSock().getOutputStream());

//建立用户自己的流

pwriter.println("

//匹配标识

pwriter.println(rt[1]);

//向单独用户发送消息

pwriter.flush();

System.out.println(rt[1]);

}catch(Exceptionex){

ex.printStackTrace();

}

}

elseif(tg[0].equals(se.getName()))//如果传进来的用户信息跟集合中的用户信息吻合

PrintWriterpwr=newPrintWriter(se.getSock().getOutputStream());

pwr.println("

pwr.println(rt[1]);

pwr.flush();

456987"

))//下线

//在服务端显示信息

//匹配字符串

//匹配完毕后群发消息

String[]si=msg.split("

//将传过来的用户名跟信息分隔开

at=Server.list1.iterator();

while(at.hasNext())

Usersr=at.next();

if(sr.getName().equals(si[0]))//如果传过来的用户名跟用户集合里的用户吻合

list1.remove(sr);

//将吻合的用户移除

sr.getSock().close();

//关闭此用户的socket

break;

123654"

))//刷新

Stringmssge="

iter=Server.list1.iterator();

while(iter.hasNext())

Useruus=iter.next();

msg=uus.getName()+"

+uus.getSex()+"

mssge+=msg;

//发送刷新匹配标识

sendMessage(mssge);

}

}catch(IOExceptionex){

publicvoidsendMessage(Stringmessage)//群发消息方法

for(PrintWriterpw:

list)//输出流集合

pw.println(message);

pw.flush();

}

客户端代码:

publicclassSocket_one//客户端

//端口

publicstaticSocketsocket;

publicSocket_one(Stringuser)

socket=newSocket("

127.0.0.1"

PORT);

//建立socket连接

【"

+user+"

】欢迎来到聊天室!

Threadtt=newThread(newRecove(socket,user));

//建立客户端线程

tt.start();

//启动线程

}catch(Exceptionex)

publicstaticvoidmain(String[]args)throwsException

newSocket_one(user);

classRecoveimplementsRunnable

publicStringuser;

privateSocketsocket;

privateBufferedReaderkeybord;

publicBufferedReaderbr;

privatePrintWriterpw;

privateStringmsg;

publicRecove(Socketsocket,Stringuser)throwsIOException

try{

this.socket=socket;

publicvoidrun()

br=newBufferedReader(newInputStreamReader(socket.getInputStream()));

while((msg=br.readLine())!

Stringmessage=msg;

if(message.equals("

gm.listModel1.clear();

//接收前清空好友列表

gm.jcomb.removeAllItems();

//清空JCombox

gm.jcomb.addItem("

所有人"

message=br.readLine();

String[]str=message.split("

//将接收到的所有用户信息分隔开

for(Stringss:

str)

gm.listModel1.addElement(ss);

//将所有用户信息添加到好友列表

gm.jcomb.addItem(ss);

//将所有用户信息添加到JCombox

elseif(message.equals("

System.out.println("

收到:

+message);

//在服务器端显示私聊消息

gm.jta2.append(message+"

\n"

//在我的频道显示私聊信息

//在服务器端显示说话信息

gm.jta1.append(message+"

//在公共频道显示说话信息

//在我的频道显示说话信息

//在公共频道显示进入聊天室信息

//在我的频道显示进入聊天室信息

//将好友列表清空

//将JCombox清空

String[]sr=message.split("

//将接收到的用户信息分隔开

for(Stringsst:

sr)

gm.listModel1.addElement(sst);

////将刷新后所有用户信息添加到好友列表

gm.jcomb.addItem(sst);

//将刷新后所有用户信息添加到JCombox

//在公共频道显示用户下线信息

//在我的频道显示用户下线信息

}catch(IOExceptionex){

登陆界面代码:

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.border.*;

classLandenextendsFrameimplementsActionListener

JFramejf=newJFrame("

聊天登陆"

JPaneljp1=newJPanel();

JPaneljp2=newJPanel();

JPaneljp3=newJPanel();

JPaneljp4=newJPanel();

JLabeljl1=newJLabel("

姓名:

JLabeljl2=newJLabel("

地址:

JLabeljl3=newJLabel("

端口:

JRadioButtonjrb1=newJRadioButton("

男生"

JRadioButtonjrb2=newJRadioButton("

女生"

JRadioButtonjrb3=newJRadioButton("

保密"

publicJTextFieldjtf1=newJTextField(10);

publicJTextFieldjtf2=newJTextField(10);

publicJTextFieldjtf3=newJTextField(10);

JButtonjb1=newJButton("

连接"

JButtonjb2=newJButton("

断开"

TitledBordertb=newTitledBorder("

ButtonGroupgb=newButtonGroup();

publicvoidinit()//显示登录界面

jb1.addActionListener(this);

jb2.addActionListener(this);

jp1.add(jl1);

jp1.add(jtf1);

jp1.add(jrb1);

jp1.add(jrb2);

jp1.add(jrb3);

jp2.add(jl2);

jp2.add(jtf2);

jp2.add(jl3);

jp2.add(jtf3);

jp3.add(jb1);

jp3.add(jb2);

jp4.setLayout(newGridLayout(3,1));

jp4.add(jp1);

jp4.add(jp2);

jp4.add(jp3);

jf.add(jp4);

jtf2.setText("

localhost"

jtf3.setText("

6666"

gb.add(jrb1);

gb.add(jrb2);

gb.add(jrb3);

jf.setLocation(200,200);

jf.setSize(350,200);

jf.setResizable(false);

jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

jf.setVisible(true);

publicvoidactionPerformed(ActionEventevent)//事件触发

jb1.setText("

jb2.setText("

Strings1=null;

if(event.getActionCommand().equals("

))

System.exit(0);

if(jtf1.getText().equals("

JOptionPane.showMessageDialog(null,"

请输入用户名!

elseif(!

jrb1.isSelected()&

&

!

jrb2.isSelected()&

jrb3.isSelected())

请选择性别!

else

jf.setVisible(false);

if(jrb1.isSelected())

s1="

boy"

elseif(jrb2.isSelected())

girl"

el

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

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

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

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