首页 > 作文

群聊源代码大全(java聊天室私聊群聊代码)

更新时间:2023-04-05 02:45:53 阅读: 评论:0

多人聊天室原理图

源码

工具类:

该类用于关闭各种流。

public class cloutil { public static void cloall(cloable... cloable){  for(cloable c:cloable){   if (c != null) {    try {     c.clo();    } catch (ioexception e) {     e.printstacktrace();    }   }  } }}

服务器:

服务器端创建一个rversocket对象通过accept()此情此刻方法监听是否有tcp连接,同时有一个储存socket对象的集合将连接进来的对象储存到list集合中,服务器将消息进行转发。

//服务器public class rver { //存储每一个连接进来的客户端 public static list<mychannel> list=new arraylist<>(); public static void main(string[] args) throws exception {   //创建rversocket对象  rversocket rversocket = new rversocket(9999);  while (true){   //连接进来的客户端   socket client = rversocket.accept();   system.out.println(client.getinetaddress()+"进入聊天室");  mychannel mychannel = new mychannel(client);  list.add(mychannel);  new thread(mychannel).start();  } }}

消息转发类:

具体的消息转发实现类,将信息发给除发送消息以外的其他客户端。

//用于信息转发public class mychannel implements runnable{ private datainputstream dis; private dataoutputstream dos; private boolean flag=true; public mychannel(socket socket) {  try{   dis=new datainputstream(socket.getinputstream());   dos=new dataoutputstream(socket.getoutputstream());  }catch (ioexception e){   flag=fal;   cloutil.cloall(dis,dos);  } } //接收数据的方法 private string receive(){  string str="";  try{   str= dis.readutf();  }catch (ioexception e){   flag=fal;   cloutil.cloall(dis,dos);   rver.list.remove(this);  }  return str; } //发送数据的方法 private void nd(string str){  try {   if (str != null && str.length() != 0) { 自主是什么意思   dos.writeutf(str);    dos.flush();   }  }catch (exception exception){   flag=fal;   cloutil.cloall(dos,dis);   rver.list.remove(this);  } } //转发消息的方法 private void ndtoother(){  string str=this.receive();  list<mychannel> list = rver.list;  for (mychannel other:list) {   if(other==list){    continue;//不发送信息给自己   }   //将消息发送给其他客户端   other.nd(str);  } } @override public void run() {  while (flag){   ndtoother();  } }}

发送信息类:
用于从键盘上获取数据然后将数据发送出去

public class nd implements runnable{ //从键盘上获取数据 private bufferedreader br; private dataoutputstream dos; private boolean flag=true; public nd() {  br=new bufferedreader(new inputstreamreader(system.in)); } public nd(socket socket){  this();  try{   dos=new dataoutputstream(socket.getoutputstream());  }catch (exception e){   flag=fal;   cloutil.cloall(dos,socket);   e.printstacktrace();  } } private string getmessage(){  string str="";  try{   str=br.readline();  }catch (ioexception e){   flag=fal;   cloutil.cloall(br);  }  return str; } private void nd(string str){  try {   dos.writeutf(str);   dos.flush();  } catch (ioexception e) {   flag=fal;   cloutil.cloall(dos);   e.printstacktrace();  } } @override public void run() {  while (flag){   this.nd(getmessage());  } }}

信息接收类:

public class receive implements runnable{  //接受数据流  private datainputstream dis;  private boolean flag=true;  public receive(socket socket){    try {      dis = new datainputstream(socket.getinputstream());    }catch (exception e){      flag德加作品=fal;      cloutil.cloall(dis,socket);    }  }  private string getmessage(){    string str="";吸烟有害健康    try {      str=dis.readutf();    } catch (ioexception e) {      flag=fal;      cloutil.cloall(dis);      e.printstacktrace();    }    return str;  }  @override  public void run() {    while (flag){      system.out.println(t800米加油稿his.getmessage());    }  }}

客户端:

public class client {  public static void main(string[] args) throws exception{    socket socket = new socket(inetaddress.getlocalhost(),9999);    nd nd = new nd(socket);    receive receive = new receive(socket);    new thread(nd).start();    new thread(receive).start();  }}

先将服务器启动然后启动客户端:测试结果如下

有喜欢的小伙伴可以自己拿去玩,代码复制直接有效。

本文发布于:2023-04-05 02:45:51,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/4f5c5a97fabd04962da6450499299f84.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:群聊源代码大全(java聊天室私聊群聊代码).doc

本文 PDF 下载地址:群聊源代码大全(java聊天室私聊群聊代码).pdf

上一篇:液碱清洁剂
下一篇:返回列表
标签:客户端   消息   数据   对象
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图