


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、服务器端代码:.*;importjava.io.*;importjava.util.*;importjava.util.concurrent.*;importjavax.swing.*;publicclassServerprivatestaticfinalintPORT=6666;G_Menugm=newG_Menu();privateServerSocketserver;publicArrayList<PrintWriter>list;publicstaticStringuser;publicstaticArrayList<User>list1=newArrayLis
2、t<User>();/定义用户集合publicUseruu;publicServer(Stringuser)this.user=user;publicvoidgetServer()list=newArrayList<PrintWriter>();tryserver=newServerSocket(PORT);System.out.println("服务器启动,开始监听");while(true)Socketclient=server.accept();/接收客户端线程PrintWriterwriter=newPrintWriter(client.ge
3、tOutputStream();list.add(writer);Threadt=newThread(newChat(client);t.start();catch(Exceptionex)ex.printStackTrace();publicstaticvoidmain(Stringargs)newServer(user).getServer();classChatimplementsRunnableSocketsocket;privateBufferedReaderbr;privateStringmsg;privateStringmssg=""publicChat(So
4、cketsocket)trythis.socket=socket;catch(Exceptionex)ex.printStackTrace();publicvoidrun()trybr=newBufferedReader(newInputStreamReader(socket.getInputStream();while(msg=br.readLine()!=null)if(msg.equals("1008611")/匹配字符串显示好友列表(msg=br.readLine();Stringst=msg.split(":");/将用户信息跟消息分隔开uu=
5、newUser(st0,st1,socket);/将用户信息添加到User对象中list1.add(uu);/将对象添加到用户集合Iterator<User>it=Server.list1.iterator();/遍历用户集合while(it.hasNext()(Useruse=it.next();msg=use.getName()+"("+use.getSex()+"):"mssg+=msg;/将所有的用户信息连接成一个字符串sendMessage("1008611");/显示好友列表匹配标识sendMessage(ms
6、sg);/群发消息elseif(msg.equals("10010")/显示说话消息(msg=br.readLine();System.out.println(msg);sendMessage("10010");/显示说话信息匹配标识sendMessage(msg);elseif(msg.equals("10086")/显示进入聊天室msg=br.readLine();System.out.println(msg);sendMessage("10086");/进入聊天室匹配标识sendMessage(msg);el
7、seif(msg.equals("841163574")/私聊msg=br.readLine();Stringrt=msg.split("1072416535");/把传进来的用信信息跟说话内容分开System.out.println(rt1);/在服务器端显示说话内容Stringtg=rt0.split(":,/因为是私聊,传过来两个用户的用户信息,这句作用是再把两个用户信息分开Iterator<User>iu=Server.list1.iterator();/遍历用户集合while(iu.hasNext()(Userse=iu.
8、next();if(tg1.equals(se.getName()+"("+se.getSex()+")")/如果传进来的用户信息跟集合中的用户信息吻合(try(PrintWriterpwriter=newPrintWriter(se.getSock().getOutputStream();/建立用户自己的流pwriter.println("841163574");/匹配标识pwriter.println(rt1);/向单独用户发送消息pwriter.flush();System.out.println(rt1);catch(Exce
9、ptionex)(ex.printStackTrace();elseif(tg0.equals(se.getName()/如果传进来的用户信息跟集合中的用户信息吻合(tryPrintWriterpwr=newPrintWriter(se.getSock().getOutputStream();/建立用户自己的流pwr.println("841163574");/匹配标识pwr.println(rt1);/向单独用户发送消息pwr.flush();System.out.println(rt1);catch(Exceptionex)ex.printStackTrace();el
10、seif(msg.equals("456987")/下线msg=br.readLine();System.out.println(msg);/在服务端显示信息sendMessage("456987");/匹配字符串sendMessage(msg);/匹配完毕后群发消息Stringsi=msg.split(":,/将传过来的用户名跟信息分隔开Iterator<User>at=Server.list1.iterator();/遍历用户集合while(at.hasNext()(Usersr=at.next();if(sr.getName(
11、).equals(si0)/如果传过来的用户名跟用户集合里的用户吻合(list1.remove(sr);/将吻合的用户移除sr.getSock().close();/关闭此用户的socketbreak;elseif(msg.equals("123654")/刷新(Stringmssge=""Iterator<User>iter=Server.list1.iterator();/遍历用户集合while(iter.hasNext()(Useruus=iter.next();msg=uus.getName()+"("+uus.g
12、etSex()+"):"mssge+=msg;/将所有的用户信息连接成一个字符串sendMessage("123654");/发送刷新匹配标识sendMessage(mssge);/群发消息catch(IOExceptionex)ex.printStackTrace();publicvoidsendMessage(Stringmessage)/群发消息方法tryfor(PrintWriterpw:list)/输出流集合pw.println(message);pw.flush();catch(Exceptionex)(ex.printStackTrace(
13、);客户端代码:.*;importjava.io.*;importjava.util.*;importjava.util.concurrent.*;publicclassSocket_one/客户端(privatestaticfinalintPORT=6666;/端口publicstaticStringuser;publicstaticSocketsocket;publicSocket_one(Stringuser)(this.user=user;try(socket=newSocket("”,PORT);/建立socket连接System.out.println(
14、""+user+"】欢迎来到聊天室!”);Threadtt=newThread(newRecove(socket,user);/建立客户端线程tt.start();/启动线程catch(Exceptionex)(ex.printStackTrace();publicstaticvoidmain(Stringargs)throwsException(newSocket_one(user);classRecoveimplementsRunnable(publicStringuser;privateSocketsocket;privateBufferedReaderke
15、ybord;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.getInputSt
16、ream();while(msg=br.readLine()!=null)Stringmessage=msg;if(message.equals("1008611")/匹配字符串显示好友列表gm.listModel1.clear();/接收前清空好友列表gm.jcomb.removeAllItems();/清空JComboxgm.jcomb.addItem("所有人");message=br.readLine();Stringstr=message.split(":");/将接收到的所有用户信息分隔开for(Stringss:str)
17、gm.listModel1.addElement(ss);/将所有用户信息添加到好友列表gm.jcomb.addItem(ss);/将所有用户信息添加到JComboxelseif(message.equals("841163574")/私聊(message=br.readLine();System.out.println("收到:"+message);/在服务器端显示私聊消息gm.jta2.append(message+"n");/在我的频道显示私聊信息elseif(message.equals("10010")/
18、显示说话消息(message=br.readLine();System.out.println("收到:"+message);/在服务器端显示说话信息gm.jta1.append(message+"n");/在公共频道显示说话信息gm.jta2.append(message+"n");/在我的频道显示说话信息elseif(message.equals("10086")/显示进入聊天室(message=br.readLine();gm.jta1.append(message+"n");/在公共频道
19、显示进入聊天室信息gm.jta2.append(message+"n");/在我的频道显示进入聊天室信息elseif(message.equals("123654")/刷新(gm.listModel1.clear();/将好友列表清空gm.jcomb.removeAllItems();/彳务JCombox清空gm.jcomb.addItem("所有人");message=br.readLine();String口sr=message.split(":");/将接收到的用户信息分隔开for(Stringsst:sr)
20、(gm.listModel1.addElement(sst);/将刷新后所有用户信息添加到好友列表gm.jcomb.addItem(sst);/将刷新后所有用户信息添加到JComboxelseif(message.equals("456987")/下线(message=br.readLine();gm.jta1.append(message+"n");/在公共频道显示用户下线信息gm.jta2.append(message+"n");/在我的频道显示用户下线信息catch(IOExceptionex)(ex.printStackTra
21、ce();登陆界面代码:importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.util.*;importjavax.swing.border.*;classLandenextendsFrameimplementsActionListener(JFramejf=newJFrame("聊天登陆,JPaneljp1=newJPanel();JPaneljp2=newJPanel();JPaneljp3=newJPanel();JPaneljp4=newJPanel();JLabeljl仁newJLabe
22、l("姓名:”);JLabeljl2=newJLabel("地址:,JLabeljl3=newJLabel("端口:");JRadioButtonjrb1=newJRadioButton("男生");JRadioButtonjrb2=newJRadioButton("女生");JRadioButtonjrb3=newJRadioButton("保密");publicJTextFieldjtf1=newJTextField(10);publicJTextFieldjtf2=newJTextFiel
23、d(10);publicJTextFieldjtf3=newJTextField(10);JButtonjb1=newJButton("连接");JButtonjb2=newJButton("断开");TitledBordertb=newTitledBorder("");ButtonGroupgb=newButtonGroup();publicvoidinit()/显示登录界面jb1.addActionListener(this);jb2.addActionListener(this);jp1.add(jl1);jp1.add(jtf
24、1);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(jrbl);gb.add(jrb2);gb.
25、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().equa
26、ls("断开")System.exit(0);if(event.getActionCommand().equals("连接")(if(jtf1.getText().equals("")(JOptionPane.showMessageDialog(null,”请输入用户名!");elseif(!jrb1.isSelected()&&!jrb2.isSelected()&&!jrb3.isSelected()(JOptionPane.showMessageDialog(null,”请选择性别!&q
27、uot;);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();publicclassLoginpublicstaticvoidmain(Stringargs)newLanden().init();主界面代码:im
28、portjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjavax.swing.border.*;.*;importjava.io.*;classG_MenuextendsJFrameimplementsActionListener(JFramejf=newJFrame("聊天室");publicSocket_onesoc;publicPrintWriterpw;publicJPaneljp1=newJPanel();publicJPaneljp2=newJPanel();publicJPaneljp3
29、=newJPanel();publicJPaneljp4=newJPanel();publicJPaneljp5=newJPanel();publicJPaneljp6=newJPanel();publicJPaneljp7=newJPanel();publicstaticJTextAreajta1=newJTextArea(12,42);publicstaticJTextAreajta2=newJTextArea(12,42);publicJLabeljl1=newJLabel("对");publicstaticJComboBoxjcomb=newJComboBox();
30、publicJCheckBoxjcb=newJCheckBox("私聊");publicJTextFieldjtf=newJTextField(36);publicJButtonjb1=newJButton("发送>>");publicJButtonjb2=newJButton("刷新");publicstaticDefaultListModellistModel1;publicstaticJListlst1;publicStringna;publicStringse;publicStringmessage;publicv
31、oidgetMenu(Stringname,Stringsex)/显示聊天界面jcomb.addItem("所有人");this.na=name;this.se=sex;jtal.setEditable(false);jta2.setEditable(false);listModel1=newDefaultListModel();lstl=newJList(listModel1);lst1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);lst1.setVisibleRowCount(18);lst1.setFix
32、edCellHeight(28);lst1.setFixedCellWidth(100);JScrollPanejsp1=newJScrollPane(jta1);JScrollPanejsp2=newJScrollPane(jta2);JScrollPanejsp3=newJScrollPane(lst1);jsp3.setBorder(newTitledBorder("好友列表");jsp1.setBorder(newTitledBorder("主聊天频道");jsp2.setBorder(newTitledBorder("我的频道&quo
33、t;);jp1.setLayout(newGridLayout(2,1);jp1.add(jsp1);jp1.add(jsp2);jp2.setLayout(newFlowLayout(FlowLayout.LEFT);jp2.add(jl1);jp2.add(jcomb);jp2.add(jcb);jp3.setLayout(newFlowLayout(FlowLayout.LEFT);jp3.add(jtf);jp3.add(jb1);jp4.setLayout(newGridLayout(2,1);jp4.add(jp2);jp4.add(jp3);jp5.setLayout(newBo
34、rderLayout();jp5.add(jp1,BorderLayout.NORTH);jp5.add(jp4,BorderLayout.SOUTH);jp6.setLayout(newBorderLayout();jp6.add(jsp3,BorderLayout.NORTH);jp6.add(jb2,BorderLayout.SOUTH);jp7.setLayout(newFlowLayout(FlowLayout.LEFT);jp7.add(jp5);jp7.add(jp6);jf.add(jp7);jf.setLocation(200,200);jf.setSize(700,650)
35、;jf.setResizable(false);jf.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);jf.setVisible(true);jb1.addActionListener(this);jb2.addActionListener(this);jta1.setLineWrap(true);jta2.setLineWrap(true);jsp1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);jsp1.setHorizontalS
36、crollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);jsp2.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);jsp2.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);jsp3.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAY
37、S);jsp3.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);jf.pack();publicvoidsock()tryStringuser=na+"("+se+")”;/将用户信息保存成字符串形式soc=newSocket_one(user);/创建客户端对象pw=newPrintWriter(soc.socket.getOutputStream();/创建输出流pw.println("1008611");/发送好友列表标识pw.pri
38、ntln(na+":"+se);/发送用户信息pw.flush();pw.println("10086");/发送进入聊天室标识pw.println(""+na+"】"+"进入聊天室");/发送进入聊天室信息pw.flush();catch(Exceptionex)ex.printStackTrace();publicG_Menu()/设置窗口关闭事件,如果点击窗口右上角叉号关闭,执行下边程序jf.addWindowListener(newWindowAdapter()publicvoidwindowClosing(WindowEvente)trypw=newPrintWriter(soc.socket.getOutputStream();pw.println("456987");/发送下线标识pw.println(na+":离开聊天室");/发送下线信息pw.flush();jf.dispose();/关闭窗口catch(Exceptionex);publicvoidactionPerformed(ActionEventevent)/事件触发(jb1.setText("发送>>");jb2.setText
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐厅服务员岗位面试问题及答案
- 医疗器械注册专员岗位面试问题及答案
- 2025届湖北省蕲春县高二化学第二学期期末综合测试模拟试题含解析
- 景区规划组团管理办法
- 林业校园食堂管理办法
- 供热办法分户管理办法
- 根据处方管理办法关于
- 校园踩踏事故管理办法
- 景区考察接待管理办法
- 投资策略:股权市场分析
- GB/T 620-2011化学试剂氢氟酸
- GB/T 19808-2005塑料管材和管件公称外径大于或等于90mm的聚乙烯电熔组件的拉伸剥离试验
- GB/T 18379-2001建筑物电气装置的电压区段
- 银行供应链融资业务管理办法
- GB/T 11881-2006羽毛球
- 化工环境保护与及安全技术概论考试题及答案
- 2023年中国黄金集团江西金山矿业有限公司招聘笔试题库及答案解析
- 医院药学-药物临床试验概述课件
- 荧光与荧光分析课件
- 120急救站(分站)工作考核细则
- 航站楼管理部《机场使用手册》实施细则
评论
0/150
提交评论