


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、java聊天程序源代码,简单点,尽量带注释,注释越多越好谢谢悬赏分:20-解决时间:2010-8-216:12哥哥姐姐们尽量带多点的注释,我是初学者,谢谢了提问者:无伤一号-二级最佳答案服务端:importjava.io.*;.*;importjava.util.*;publicclassChatServerbooleanstat=false;ServerSocketss=null;List<Client>clients=newArrayList<Client>();/用于存客户端publicstaticvoidmain(String口args)newChatServe
2、r().start();publicvoidstart()tryss=newServerSocket(8888);stat=true;catch(BindExceptione)/Sever端已经运行,当重复运行时抛异常System.out.println("端口正在使用中。");System.out.println(”请关掉相关程序并重新运行服务器!");还会抛别的异常,所以直接关闭窗口System.exit(0);catch(IOExceptione)e.printStackTrace();trywhile(stat)Sockets=ss.accept();Sy
3、stem.out.println("aclientconnected!");测试语句写在最左边,以后没用可以删除或注掉Clientc=newClient(s);每建立一个客户端,就new一个客户端对象,启动一个线程newThread(c).start();clients.add(c);/勿忘写,将每个客户端加入到容器里catch(lOExceptione)(e.printStackTrace();finally(try(ss.close();catch(IOExceptione)(e.printStackTrace();classClientimplementsRunnab
4、le(privateSockets;privateDataInputStreamdis;privateDataOutputStreamdos;privatebooleancont=false;publicClient(Sockets)(this.s=s;try(dis=newDataInputStream(s.getInputStream();/初始化dos=newDataOutputStream(s.getOutputStream();cont=true;catch(IOExceptione)(e.printStackTrace();publicvoidsend(Stringstr)(/用于
5、发送给客户端try(dos.writeUTF(str);catch(IOExceptione)(clients.remove(this);/移除那个退出的对象System.out.println("一个客户退出了");/e.printStackTrace();publicvoidrun()(try(while(cont)(Stringstr=dis.readUTF();/阻塞式方法System.out.println(str);for(inti=0;i<clients.size();i+)(Clientc=clients.get(i);取客户端c.send(str);
6、/*另外两种方法,但不适用,它会锁定服务端for(Iterator<Client>it=clients.iterator();it.hasNext();)Clientc=it.next();c.send(str);Iterator<Client>it=clients.iterator();while(it.hasNext()Clientc=it.next();c.send(str);*/catch(EOFExceptione)/readUTF()阻塞式方法,所以关闭客户端会抛异常System.out.println("Clientclosed!");
7、catch(IOExceptione)e.printStackTrace();finallytryif(dis!=null)dis.close();if(dos!=null)dos.close();if(s!=null)s.close();s=null;/更严格的方法,等于空就没人去用了,垃圾收集器就回收走catch(IOExceptione)e.printStackTrace();客户端:importjava.awt.*;importjava.awt.event.*;importjava.io.*;.*;publicclassChatClientextendsFrame(Sockets=nu
8、ll;DataOutputStreamdos=null;DataInputStreamdis=null;privatebooleancont=false;TextFieldtfTxt=newTextField();TextAreataContent=newTextArea();ThreadtRecv=newThread(newRecvThread();publicstaticvoidmain(String口args)(newChatClient().launchFrame();publicvoidlaunchFrame()(setLocation(400,300);this.setSize(3
9、00,300);add(tfTxt,BorderLayout.SOUTH);add(taContent,BorderLayout.NORTH);pack();/包在一起,去掉中间空着的this.addWindowListener(newWindowAdapter()publicvoidwindowClosing(WindowEvente)disconnect();System.exit(0););tfTxt.addActionListener(newTfListent();setVisible(true);connect();tRecv.start();启动线程publicvoidconnec
10、t()trys=newSocket("”,8888);/注意不要定义成Sockets,这就成了局部变量而不是成员变量了System.out.println("connected!”);dos=newDataOutputStream(s.getOutputStream();dis=newDataInputStream(s.getInputStream();cont=true;catch(UnknownHostExceptione)e.printStackTrace();catch(IOExceptione)e.printStackTrace();public
11、voiddisconnect()trydos.close();dis.close();s.close();catch(IOExceptione)e.printStackTrace();/*/无法解决readUTF阻塞式方法trycont=false;关闭线程tRecv.join();合并线程,彻底让他停止catch(InterruptedExceptione)e.printStackTrace();finallytrydos.close();/线程停止之后才能关流,不然抛SocketException异常dis.close();s.close();catch(IOExceptione)e.pr
12、intStackTrace();*/privateclassTfListentimplementsActionListenerpublicvoidactionPerformed(ActionEvente)Stringstr=tfTxt.getText().trim();tfTxt.setText("");try(dos.writeUTF(str);dos.flush();catch(IOExceptione1)(e1.printStackTrace();privateclassRecvThreadimplementsRunnablepublicvoidrun()trywhile(cont)Stringstr=dis.readUTF();taContent.setText(taContent.getText()+st
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年执业药师药学专业知识高频考点试题
- 2025年高压电工考试:安全事故应急处理与预防措施试题
- 2025年消防安全知识培训考试题库(消防设施操作)消防设施操作员消防安全管理试题解析
- 2025年注册会计师考试《会计》金融工具会计处理试题集
- 2025年小学教师资格《综合素质》教师礼仪与沟通重点试题解析答案
- 2025年摄影师职业技能鉴定试卷:摄影器材租赁市场分析报告撰写与案例分析试题
- 2025年专升本艺术概论艺术鉴赏模拟试题与答案
- 2025年统计学期末考试:统计调查设计与实施应用试题解析答案
- 2025年花艺师职业资格考试真题模拟训练-花卉植物遗传学知识试题
- 2025年高压电工事故应急处理安全教育与培训试题库
- GB/T 18970-2003饲料添加剂10%β,β-胡萝卜-4,4-二酮(10%斑蝥黄)
- 履带式管道机器人方案
- 市级课题结题报告-“双减”背景下小学数学课堂开展学生“项目式学习”的实践研究(优秀等次)
- 预科化学(化学实验基本方法)课件
- 不锈钢棚施工方案
- 医用高等数学定积分课件
- 深加工结转操作标准流程
- 溺水伤亡事故应急预案演练方案
- 2022年有子女离婚协议书手写
- 公路硬化报告范文
- 部编版八年级上册语文《消息二则》课件(定稿)
评论
0/150
提交评论