ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:20.63KB ,
资源ID:8699992      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8699992.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java实现聊天室功能包含全部代码有界面.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、java实现聊天室功能包含全部代码有界面服务器端代码:import .*;import java.io.*;import java.util.*;import java.util.concurrent.*;import javax.swing.*;public class Server private static final int PORT=6666; G_Menu gm=new G_Menu(); private ServerSocket server; public ArrayList list; public static String user; public static Arr

2、ayList list1=new ArrayList();/定义用户集合 public User uu; public Server(String user) this.user=user; public void getServer() list =new ArrayList(); try server=new ServerSocket(PORT); System.out.println(服务器启动,开始监听.); while(true) Socket client=server.accept();/接收客户端线程 PrintWriter writer = new PrintWriter(c

3、lient.getOutputStream(); list.add(writer); Thread t = new Thread(new Chat(client); t.start(); catch(Exception ex) ex.printStackTrace(); public static void main(String args) new Server(user).getServer(); class Chat implements Runnable Socket socket; private BufferedReader br; private String msg; priv

4、ate String mssg=; public Chat(Socket socket) try this.socket=socket; catch(Exception ex) ex.printStackTrace(); public void run() try br=new BufferedReader(new InputStreamReader(socket.getInputStream(); while(msg=br.readLine()!=null) if(msg.equals(1008611)/匹配字符串 显示好友列表 msg=br.readLine(); String st=ms

5、g.split(:);/将用户信息跟消息分隔开 uu=new User(st0,st1,socket);/将用户信息添加到User对象中 list1.add(uu);/将对象添加到用户集合 Iterator it=Server.list1.iterator();/遍历用户集合 while(it.hasNext() User use=it.next(); msg=use.getName()+(+use.getSex()+):; mssg+=msg;/将所有的用户信息连接成一个字符串 sendMessage(1008611);/显示好友列表匹配标识 sendMessage(mssg);/群发消息

6、else if(msg.equals(10010)/显示说话消息 msg=br.readLine(); System.out.println(msg); sendMessage(10010);/显示说话信息匹配标识 sendMessage(msg); else if(msg.equals(10086)/显示进入聊天室 msg=br.readLine(); System.out.println(msg); sendMessage(10086);/进入聊天室匹配标识 sendMessage(msg); else if(msg.equals(841163574)/私聊 msg=br.readLine

7、(); String rt=msg.split(1072416535);/把传进来的用户信息跟说话内容分开 System.out.println(rt1);/在服务器端显示说话内容 String tg=rt0.split(:);/因为是私聊,传过来两个用户的用户信息,这句作用是再把两个用户信息分开 Iterator iu=Server.list1.iterator();/遍历用户集合 while(iu.hasNext() User se=iu.next(); if(tg1.equals(se.getName()+(+se.getSex()+)/如果传进来的用户信息跟集合中的用户信息吻合 try

8、 PrintWriter pwriter=new PrintWriter(se.getSock().getOutputStream();/建立用户自己的流 pwriter.println(841163574);/匹配标识 pwriter.println(rt1);/向单独用户发送消息 pwriter.flush(); System.out.println(rt1); catch(Exception ex) ex.printStackTrace(); else if(tg0.equals(se.getName()/如果传进来的用户信息跟集合中的用户信息吻合 try PrintWriter pwr

9、=new PrintWriter(se.getSock().getOutputStream();/建立用户自己的流 pwr.println(841163574);/匹配标识 pwr.println(rt1);/向单独用户发送消息 pwr.flush(); System.out.println(rt1); catch(Exception ex) ex.printStackTrace(); else if(msg.equals(456987)/下线 msg=br.readLine(); System.out.println(msg);/在服务端显示信息 sendMessage(456987);/匹

10、配字符串 sendMessage(msg);/匹配完毕后群发消息 String si=msg.split(:);/将传过来的用户名跟信息分隔开 Iterator at=Server.list1.iterator();/遍历用户集合 while(at.hasNext() User sr=at.next(); if(sr.getName().equals(si0)/如果传过来的用户名跟用户集合里的用户吻合 list1.remove(sr);/将吻合的用户移除 sr.getSock().close();/关闭此用户的socket break; else if(msg.equals(123654)/刷

11、新 String mssge=; Iterator iter=Server.list1.iterator();/遍历用户集合 while(iter.hasNext() User uus=iter.next(); msg=uus.getName()+(+uus.getSex()+):; mssge+=msg;/将所有的用户信息连接成一个字符串 sendMessage(123654);/发送刷新匹配标识 sendMessage(mssge);/群发消息 catch(IOException ex) ex.printStackTrace(); public void sendMessage(Strin

12、g message)/群发消息方法 try for(PrintWriter pw:list)/输出流集合 pw.println(message); pw.flush(); catch(Exception ex) ex.printStackTrace(); 客户端代码:import .*;import java.io.*;import java.util.*;import java.util.concurrent.*;public class Socket_one/客户端 private static final int PORT=6666;/端口 public static String us

13、er; public static Socket socket; public Socket_one(String user) this.user=user; try socket=new Socket(127.0.0.1,PORT);/建立socket连接 System.out.println(【+user+】欢迎来到聊天室!); Thread tt=new Thread(new Recove(socket,user);/建立客户端线程 tt.start();/启动线程 catch(Exception ex) ex.printStackTrace(); public static void

14、main(String args) throws Exception new Socket_one(user); class Recove implements Runnable public String user; private Socket socket; private BufferedReader keybord; public BufferedReader br; private PrintWriter pw; private String msg; G_Menu gm=new G_Menu(); public Recove(Socket socket,String user)

15、throws IOException try this.socket=socket; this.user=user; catch(Exception ex) ex.printStackTrace(); public void run() try br=new BufferedReader(new InputStreamReader(socket.getInputStream(); while(msg=br.readLine()!=null) String message=msg; if(message.equals(1008611)/匹配字符串 显示好友列表 gm.listModel1.cle

16、ar();/接收前清空好友列表 gm.jcomb.removeAllItems();/清空JCombox gm.jcomb.addItem(所有人); message=br.readLine(); String str=message.split(:);/将接收到的所有用户信息分隔开 for(String ss:str) gm.listModel1.addElement(ss);/将所有用户信息添加到好友列表 gm.jcomb.addItem(ss);/将所有用户信息添加到JCombox else if(message.equals(841163574)/私聊 message=br.readL

17、ine(); System.out.println(收到:+message);/在服务器端显示私聊消息 gm.jta2.append(message+n);/在我的频道显示私聊信息 else if(message.equals(10010)/显示说话消息 message=br.readLine(); System.out.println(收到:+message);/在服务器端显示说话信息 gm.jta1.append(message+n);/在公共频道显示说话信息 gm.jta2.append(message+n);/在我的频道显示说话信息 else if(message.equals(100

18、86)/显示进入聊天室 message=br.readLine(); gm.jta1.append(message+n);/在公共频道显示进入聊天室信息 gm.jta2.append(message+n);/在我的频道显示进入聊天室信息 else if(message.equals(123654)/刷新 gm.listModel1.clear();/将好友列表清空 gm.jcomb.removeAllItems();/将JCombox 清空 gm.jcomb.addItem(所有人); message=br.readLine(); String sr=message.split(:);/将接收

19、到的用户信息分隔开 for(String sst:sr) gm.listModel1.addElement(sst);/将刷新后所有用户信息添加到好友列表 gm.jcomb.addItem(sst);/将刷新后所有用户信息添加到JCombox else if(message.equals(456987)/下线 message=br.readLine(); gm.jta1.append(message+n);/在公共频道显示用户下线信息 gm.jta2.append(message+n);/在我的频道显示用户下线信息 catch(IOException ex) ex.printStackTrac

20、e(); 登陆界面代码:import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;import javax.swing.border.*;class Landen extends Frame implements ActionListener JFrame jf=new JFrame(聊天登陆); JPanel jp1=new JPanel(); JPanel jp2=new JPanel(); JPanel jp3=new JPanel(); JPanel jp4=new JPanel(

21、); JLabel jl1=new JLabel(姓名:); JLabel jl2=new JLabel(地址:); JLabel jl3=new JLabel(端口:); JRadioButton jrb1=new JRadioButton(男生); JRadioButton jrb2=new JRadioButton(女生); JRadioButton jrb3=new JRadioButton(保密); public JTextField jtf1=new JTextField(10); public JTextField jtf2=new JTextField(10); public

22、JTextField jtf3=new JTextField(10); JButton jb1=new JButton(连接); JButton jb2=new JButton(断开); TitledBorder tb=new TitledBorder(); ButtonGroup gb=new ButtonGroup(); public void init()/显示登录界面 jb1.addActionListener(this); jb2.addActionListener(this); jp1.add(jl1); jp1.add(jtf1); jp1.add(jrb1); jp1.add(

23、jrb2); jp1.add(jrb3); jp2.add(jl2); jp2.add(jtf2); jp2.add(jl3); jp2.add(jtf3); jp3.add(jb1); jp3.add(jb2); jp4.setLayout(new GridLayout(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(

24、200, 200); jf.setSize(350, 200); jf.setResizable(false); jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); jf.setVisible(true); public void actionPerformed(ActionEvent event)/事件触发 jb1.setText(连接); jb2.setText(断开); String s1=null; if(event.getActionCommand().equals(断开) System.exit(0); if(event.ge

25、tActionCommand().equals(连接) if(jtf1.getText().equals() JOptionPane.showMessageDialog(null,请输入用户名!); else if(!jrb1.isSelected()&!jrb2.isSelected()&!jrb3.isSelected() JOptionPane.showMessageDialog(null,请选择性别!); else jf.setVisible(false); if(jrb1.isSelected() s1=boy; else if(jrb2.isSelected() s1=girl;

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

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