版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-作者xxxx-日期xxxxjava实现聊天室功能(包含全部代码,有界面)【精品文档】服务器端代码:import .*;import java.io.*;import .*;import .*;import .*;public class Serverprivate static final int PORT=6666;G_Menu gm=new G_Menu();private ServerSocket server;public ArrayList list;public static String user;public static ArrayList list1=new ArrayL
2、ist();/定义用户集合public User uu;public Server(String user)=user;public void getServer()list =new ArrayList();tryserver=new ServerSocket(PORT);(服务器启动,开始监听.);while(true)Socket client=();/接收客户端线程PrintWriter writer = new PrintWriter(); (writer); Thread t = new Thread(new Chat(client); ();catch(Exception ex)
3、();public static void main(String args)new Server(user).getServer();class Chat implements RunnableSocket socket;private BufferedReader br;private String msg;private String mssg=;public Chat(Socket socket) try=socket;catch(Exception ex)();public void run()trybr=new BufferedReader(new InputStreamReade
4、r();while(msg=()!=null)if(1008611)/匹配字符串 显示好友列表msg=();String st=(:);/将用户信息跟消息分隔开uu=new User(st0,st1,socket);/将用户信息添加到User对象中list1.add(uu);/将对象添加到用户集合Iterator it=Server.list1.iterator();/遍历用户集合while()User use=();msg=()+(+()+):;mssg+=msg;/将所有的用户信息连接成一个字符串sendMessage(1008611);/显示好友列表匹配标识sendMessage(mss
5、g);/群发消息else if(10010)/显示说话消息msg=();(msg);sendMessage(10010);/显示说话信息匹配标识sendMessage(msg);else if(10086)/显示进入聊天室msg=();(msg);sendMessage(10086);/进入聊天室匹配标识sendMessage(msg);else if(841163574)/私聊msg=();String rt=(1072416535);/把传进来的用户信息跟说话内容分开(rt1);/在服务器端显示说话内容String tg=rt0.split(:);/因为是私聊,传过来两个用户的用户信息,这
6、句作用是再把两个用户信息分开Iterator iu=Server.list1.iterator();/遍历用户集合while()User se=();if(tg1.equals()+(+()+)/如果传进来的用户信息跟集合中的用户信息吻合tryPrintWriter pwriter=new PrintWriter().getOutputStream();/建立用户自己的流(841163574);/匹配标识(rt1);/向单独用户发送消息();(rt1);catch(Exception ex)();else if(tg0.equals()/如果传进来的用户信息跟集合中的用户信息吻合tryPrin
7、tWriter pwr=new PrintWriter().getOutputStream();/建立用户自己的流(841163574);/匹配标识(rt1);/向单独用户发送消息();(rt1);catch(Exception ex)();else if(456987)/下线msg=();(msg);/在服务端显示信息sendMessage(456987);/匹配字符串sendMessage(msg);/匹配完毕后群发消息String si=(:);/将传过来的用户名跟信息分隔开Iterator at=Server.list1.iterator();/遍历用户集合while()User sr
8、=();if().equals(si0)/如果传过来的用户名跟用户集合里的用户吻合list1.remove(sr);/将吻合的用户移除().close();/关闭此用户的socketbreak;else if(123654)/刷新String mssge=;Iterator iter=Server.list1.iterator();/遍历用户集合while()User uus=();msg=()+(+()+):;mssge+=msg;/将所有的用户信息连接成一个字符串sendMessage(123654);/发送刷新匹配标识sendMessage(mssge);/群发消息catch(IOExc
9、eption ex)();public void sendMessage(String message)/群发消息方法tryfor(PrintWriter pw:list)/输出流集合(message);();catch(Exception ex)();客户端代码:import .*;import java.io.*;import .*;import .*;public class Socket_one/客户端private static final int PORT=6666;/端口public static String user;public static Socket socket;p
10、ublic Socket_one(String user)=user;trysocket=new Socket(127.0.0.1,PORT);/建立socket连接(【+user+】欢迎来到聊天室!);Thread tt=new Thread(new Recove(socket,user);/建立客户端线程();/启动线程catch(Exception ex)();public static void main(String args) throws Exceptionnew Socket_one(user);class Recove implements Runnablepublic St
11、ring 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) throws IOExceptiontry=socket;=user;catch(Exception ex)();public void run()trybr=new BufferedReader(new Inp
12、utStreamReader();while(msg=()!=null)String message=msg;if(1008611)/匹配字符串 显示好友列表gm.listModel1.clear();/接收前清空好友列表();/清空JCombox(所有人);message=();String str=(:);/将接收到的所有用户信息分隔开for(String ss:str)gm.listModel1.addElement(ss);/将所有用户信息添加到好友列表(ss);/将所有用户信息添加到JComboxelse if(841163574)/私聊message=();(收到:+message
13、);/在服务器端显示私聊消息gm.jta2.append(message+n);/在我的频道显示私聊信息else if(10010)/显示说话消息message=();(收到:+message);/在服务器端显示说话信息gm.jta1.append(message+n);/在公共频道显示说话信息gm.jta2.append(message+n);/在我的频道显示说话信息else if(10086)/显示进入聊天室message=();gm.jta1.append(message+n);/在公共频道显示进入聊天室信息gm.jta2.append(message+n);/在我的频道显示进入聊天室信
14、息else if(123654)/刷新gm.listModel1.clear();/将好友列表清空();/将JCombox 清空(所有人);message=();String sr=(:);/将接收到的用户信息分隔开for(String sst:sr)gm.listModel1.addElement(sst);/将刷新后所有用户信息添加到好友列表(sst);/将刷新后所有用户信息添加到JComboxelse if(456987)/下线message=();gm.jta1.append(message+n);/在公共频道显示用户下线信息gm.jta2.append(message+n);/在我的
15、频道显示用户下线信息catch(IOException ex)();登陆界面代码:import java.awt.*;import .*;import .*;import .*;import .*;class Landen extends Frame implements ActionListenerJFrame jf=new JFrame(聊天登陆);JPanel jp1=new JPanel();JPanel jp2=new JPanel();JPanel jp3=new JPanel();JPanel jp4=new JPanel();JLabel jl1=new JLabel(姓名:)
16、;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 JTextField jtf3=new JTextField(10);JB
17、utton 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(jrb2);jp1.add(jrb3);jp2.add(jl2);jp2.add(jtf2);j
18、p2.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);(jp4);jtf2.setText(localhost);jtf3.setText(6666);(jrb1);(jrb2);(jrb3);(200, 200);(350, 200);(false);();(true);public void actionPerformed(ActionEvent event)/事件触发jb1.setText(连接
19、);jb2.setText(断开);String s1=null;if().equals(断开)(0);if().equals(连接)if(jtf1.getText().equals()(null,请输入用户名!);else if(!jrb1.isSelected()&!jrb2.isSelected()&!jrb3.isSelected()(null,请选择性别!);else(false);if(jrb1.isSelected()s1=boy;else if(jrb2.isSelected()s1=girl;else if(jrb3.isSelected()s1=secret;G_Menu
20、gmu=new G_Menu();(jtf1.getText(),s1);();public class Loginpublic static void main(String args)new Landen().init();主界面代码:import java.awt.*;import .*;import .*;import .*;import .*;import java.io.*;class G_Menu extends JFrame implements ActionListenerJFrame jf=new JFrame(聊天室);public Socket_one soc;publ
21、ic PrintWriter pw;public JPanel jp1=new JPanel();public JPanel jp2=new JPanel();public JPanel jp3=new JPanel();public JPanel jp4=new JPanel();public JPanel jp5=new JPanel();public JPanel jp6=new JPanel();public JPanel jp7=new JPanel();public static JTextArea jta1=new JTextArea(12,42);public static J
22、TextArea jta2=new JTextArea(12,42);public JLabel jl1=new JLabel(对);public static JComboBox jcomb=new JComboBox();public JCheckBox jcb=new JCheckBox(私聊);public JTextField jtf=new JTextField(36);public JButton jb1=new JButton(发送);public JButton jb2=new JButton(刷新);public static DefaultListModel listMo
23、del1;public static JList lst1;public String na;public String se;public String message;public void getMenu(String name,String sex)/显示聊天界面(所有人);this.na=name;this.se=sex;jta1.setEditable(false);jta2.setEditable(false);listModel1= new DefaultListModel();lst1 = new JList(listModel1);lst1.setSelectionMode
24、();lst1.setVisibleRowCount(18);lst1.setFixedCellHeight(28);lst1.setFixedCellWidth(100);JScrollPane jsp1=new JScrollPane(jta1);JScrollPane jsp2=new JScrollPane(jta2);JScrollPane jsp3=new JScrollPane(lst1);jsp3.setBorder(new TitledBorder(好友列表);jsp1.setBorder(new TitledBorder(主聊天频道);jsp2.setBorder(new
25、TitledBorder(我的频道);jp1.setLayout(new GridLayout(2,1);jp1.add(jsp1);jp1.add(jsp2);jp2.setLayout(new FlowLayout();jp2.add(jl1);jp2.add(jcomb);jp2.add(jcb);jp3.setLayout(new FlowLayout();jp3.add(jtf);jp3.add(jb1);jp4.setLayout(new GridLayout(2,1);jp4.add(jp2);jp4.add(jp3);jp5.setLayout(new BorderLayout
26、();jp5.add(jp1,BorderLayout.NORTH);jp5.add(jp4,BorderLayout.SOUTH);jp6.setLayout(new BorderLayout();jp6.add(jsp3,BorderLayout.NORTH);jp6.add(jb2,BorderLayout.SOUTH);jp7.setLayout(new FlowLayout();jp7.add(jp5);jp7.add(jp6);(jp7);(200,200);(700,650);(false);();(true);jb1.addActionListener(this);jb2.ad
27、dActionListener(this);jta1.setLineWrap(true);jta2.setLineWrap(true);jsp1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);jsp1.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);jsp2.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_
28、ALWAYS);jsp2.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);jsp3.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);NEVER);();public void sock()tryString user=na+(+se+);/将用户信息保存成字符串形式soc=new Socket_one(user);/创建客户端对象pw=new PrintWriter();/创建输出流(1008611);/发送好友列表标识(na+:+se);/发送用户信息();(10086);/发送进入聊天室标识(【+na+】+进入聊天室);/发送进入聊天室信息();catch(Exception ex)();public G_Menu() /设置窗口关闭事件,如果点击窗口右上角叉号关闭,执行下边程序( new WindowAdapter()public void windowClosing(WindowEvent e)try pw=new PrintWriter();(456987);/发送下线标识(na+:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度版权购买合同的版权购买
- 2024年度个人借款及担保人合同
- 2024年度化学品运输合同及安全协议
- 04版房地产项目设计与施工监理合同
- 2024年度口罩物流配送服务承包合同
- 2024年度安防工程改造与升级服务合同
- 2024年度广告媒体代理与销售合同
- 2024年度产业园区生态环境保护与恢复工程施工合同
- 到梦空间培训会封面
- 2024年度建筑施工合同:大型体育场馆建设
- 2024-2030年中国房车行业竞争战略发展趋势预测报告
- 2023年8月26日事业单位联考C类《职业能力倾向测验》试题
- 2023年天津公务员已出天津公务员考试真题
- 施工现场临水施工方案
- 2022年公务员多省联考《申论》真题(四川县乡卷)及答案解析
- 艾滋病职业防护培训
- 全科医生转岗培训结业考核模拟考试试题
- 2025年高考数学专项题型点拨训练之初等数论
- 上海市浦东新区2024-2025学年六年级上学期11月期中数学试题(无答案)
- 吃动平衡健康体重 课件 2024-2025学年人教版(2024)初中体育与健康七年级全一册
- 通信技术工程师招聘笔试题与参考答案(某世界500强集团)2024年
评论
0/150
提交评论