java聊天程序源代码_第1页
java聊天程序源代码_第2页
java聊天程序源代码_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论