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

上传人:b****1 文档编号:10515255 上传时间:2023-05-26 格式:DOCX 页数:27 大小:21.59KB
下载 相关 举报
java实现聊天室功能包含全部代码有界面.docx_第1页
第1页 / 共27页
java实现聊天室功能包含全部代码有界面.docx_第2页
第2页 / 共27页
java实现聊天室功能包含全部代码有界面.docx_第3页
第3页 / 共27页
java实现聊天室功能包含全部代码有界面.docx_第4页
第4页 / 共27页
java实现聊天室功能包含全部代码有界面.docx_第5页
第5页 / 共27页
java实现聊天室功能包含全部代码有界面.docx_第6页
第6页 / 共27页
java实现聊天室功能包含全部代码有界面.docx_第7页
第7页 / 共27页
java实现聊天室功能包含全部代码有界面.docx_第8页
第8页 / 共27页
java实现聊天室功能包含全部代码有界面.docx_第9页
第9页 / 共27页
java实现聊天室功能包含全部代码有界面.docx_第10页
第10页 / 共27页
java实现聊天室功能包含全部代码有界面.docx_第11页
第11页 / 共27页
java实现聊天室功能包含全部代码有界面.docx_第12页
第12页 / 共27页
java实现聊天室功能包含全部代码有界面.docx_第13页
第13页 / 共27页
java实现聊天室功能包含全部代码有界面.docx_第14页
第14页 / 共27页
java实现聊天室功能包含全部代码有界面.docx_第15页
第15页 / 共27页
java实现聊天室功能包含全部代码有界面.docx_第16页
第16页 / 共27页
java实现聊天室功能包含全部代码有界面.docx_第17页
第17页 / 共27页
java实现聊天室功能包含全部代码有界面.docx_第18页
第18页 / 共27页
java实现聊天室功能包含全部代码有界面.docx_第19页
第19页 / 共27页
java实现聊天室功能包含全部代码有界面.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

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

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

java实现聊天室功能包含全部代码有界面

服务器端代码:

import.*;

importjava.io.*;

importjava.util.*;

import.*;

importjavax.swing.*;

publicclassServer

{

privatestaticfinalintPORT=6666;

G_Menugm=newG_Menu();

privateServerSocketserver;

publicArrayListlist;

publicstaticStringuser;

publicstaticArrayListlist1=newArrayList();//定义用户集合

publicUseruu;

publicServer(Stringuser)

{

this.user=user;

}

publicvoidgetServer()

{

list=newArrayList();

try{

server=newServerSocket(PORT);

("服务器启动,开始监听......");

while(true)

{

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()

{

try{

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);//将对象添加到用户集合

Iteratorit=Server.list1.iterator();//遍历用户集合

while(it.hasNext())

{

Useruse=it.next();

msg=use.getName()+"("+use.getSex()+"):

";

mssg+=msg;//将所有的用户信息连接成一个字符串

}

sendMessage("1008611");//显示好友列表匹配标识

sendMessage(mssg);//群发消息

}

elseif(msg.equals("10010"))//显示说话消息

{

msg=br.readLine();

(msg);

sendMessage("10010");//显示说话信息匹配标识

sendMessage(msg);

}

elseif(msg.equals("10086"))//显示进入聊天室

{

msg=br.readLine();

(msg);

sendMessage("10086");//进入聊天室匹配标识

sendMessage(msg);

}

elseif(msg.equals("841163574"))//私聊

{

msg=br.readLine();

String[]rt=msg.split("1072416535");//把传进来的用户信息跟说话内容分开

(rt[1]);//在服务器端显示说话内容

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

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

Iteratoriu=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("841163574");//匹配标识

pwriter.println(rt[1]);//向单独用户发送消息

pwriter.flush();

(rt[1]);

}catch(Exceptionex){

ex.printStackTrace();

}

}

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

{

try{

PrintWriterpwr=newPrintWriter(se.getSock().getOutputStream());//建立用户自己的流

pwr.println("841163574");//匹配标识

pwr.println(rt[1]);//向单独用户发送消息

pwr.flush();

(rt[1]);

}catch(Exceptionex){

ex.printStackTrace();

}

}

}

}

elseif(msg.equals("456987"))//下线

{

msg=br.readLine();

(msg);//在服务端显示信息

sendMessage("456987");//匹配字符串

sendMessage(msg);//匹配完毕后群发消息

String[]si=msg.split(":

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

Iteratorat=Server.list1.iterator();//遍历用户集合

while(at.hasNext())

{

Usersr=at.next();

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

{

list1.remove(sr);//将吻合的用户移除

sr.getSock().close();//关闭此用户的socket

}

}

break;

}

elseif(msg.equals("123654"))//刷新

{

Stringmssge="";

Iteratoriter=Server.list1.iterator();//遍历用户集合

while(iter.hasNext())

{

Useruus=iter.next();

msg=uus.getName()+"("+uus.getSex()+"):

";

mssge+=msg;//将所有的用户信息连接成一个字符串

}

sendMessage("123654");//发送刷新匹配标识

sendMessage(mssge);//群发消息

}

}

}catch(IOExceptionex){

ex.printStackTrace();

}

}

}

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

{

try{

for(PrintWriterpw:

list)//输出流集合

{

pw.println(message);

pw.flush();

}

}catch(Exceptionex){

ex.printStackTrace();

}

}

}

客户端代码:

import.*;

importjava.io.*;

importjava.util.*;

import.*;

publicclassSocket_one//客户端

{

privatestaticfinalintPORT=6666;//端口

publicstaticStringuser;

publicstaticSocketsocket;

publicSocket_one(Stringuser)

{

this.user=user;

try{

socket=newSocket("127.0.0.1",PORT);//建立socket连接

("【"+user+"】欢迎来到聊天室!

");

Threadtt=newThread(newRecove(socket,user));//建立客户端线程

tt.start();//启动线程

}catch(Exceptionex)

{

ex.printStackTrace();

}

}

publicstaticvoidmain(String[]args)throwsException

{

newSocket_one(user);

}

}

classRecoveimplementsRunnable

{

publicStringuser;

privateSocketsocket;

privateBufferedReaderkeybord;

publicBufferedReaderbr;

privatePrintWriterpw;

privateStringmsg;

G_Menugm=newG_Menu();

publicRecove(Socketsocket,Stringuser)throwsIOException

{

try{

this.socket=socket;

this.user=user;

}catch(Exceptionex){

ex.printStackTrace();

}

}

publicvoidrun()

{

try{

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

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

=null)

{

Stringmessage=msg;

if(message.equals("1008611"))//匹配字符串显示好友列表

{

gm.listModel1.clear();//接收前清空好友列表

();//清空JCombox

("所有人");

message=br.readLine();

String[]str=message.split(":

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

for(Stringss:

str)

{

gm.listModel1.addElement(ss);//将所有用户信息添加到好友列表

(ss);//将所有用户信息添加到JCombox

}

}

elseif(message.equals("841163574"))//私聊

{

message=br.readLine();

("收到:

"+message);//在服务器端显示私聊消息

gm.jta2.append(message+"\n");//在我的频道显示私聊信息

}

elseif(message.equals("10010"))//显示说话消息

{

message=br.readLine();

("收到:

"+message);//在服务器端显示说话信息

gm.jta1.append(message+"\n");//在公共频道显示说话信息

gm.jta2.append(message+"\n");//在我的频道显示说话信息

}

elseif(message.equals("10086"))//显示进入聊天室

{

message=br.readLine();

gm.jta1.append(message+"\n");//在公共频道显示进入聊天室信息

gm.jta2.append(message+"\n");//在我的频道显示进入聊天室信息

}

elseif(message.equals("123654"))//刷新

{

gm.listModel1.clear();//将好友列表清空

();//将JCombox清空

("所有人");

message=br.readLine();

String[]sr=message.split(":

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

for(Stringsst:

sr)

{

gm.listModel1.addElement(sst);////将刷新后所有用户信息添加到好友列表

(sst);//将刷新后所有用户信息添加到JCombox

}

}

elseif(message.equals("456987"))//下线

{

message=br.readLine();

gm.jta1.append(message+"\n");//在公共频道显示用户下线信息

gm.jta2.append(message+"\n");//在我的频道显示用户下线信息

}

}

}catch(IOExceptionex){

ex.printStackTrace();

}

}

}

登陆界面代码:

importjava.awt.*;

import.*;

importjavax.swing.*;

importjava.util.*;

import.*;

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(event.getActionCommand().equals("连接"))

{

if(jtf1.getText().equals(""))

{

JOptionPane.showMessageDialog(null,"请输入用户名!

");

}

elseif(!

jrb1.isSelected()&&!

jrb2.isSelected()&&!

jrb3.isSelected())

{

JOptionPane.showMessageDialog(null,"请选择性别!

");

}

else

{

jf.setVisible(false);

if(jrb1.isSelected())

{

s1="boy";

}

elseif(jrb2.isSelected())

{

s1="girl";

}

elseif(jrb3.isSelected())

{

s1="secret";

}

G_Menugmu=newG_Menu();

gmu.getMenu(jtf1.getText(),s1);

gmu.sock();

}

}

}

}

publicclassLogin

{

publicstaticvoidmain(String[]args)

{

newLanden().init();

}

}

主界面代码:

importjava.awt.*;

import.*;

importjavax.s

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

当前位置:首页 > PPT模板 > 商务科技

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

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