Java Socket通信之聊天室功能

作者:LY_624 时间:2022-02-04 11:47:35 

本文实例为大家分享了Java Socket聊天室功能的具体代码,供大家参考,具体内容如下

Client.java


import java.io.*;
import java.net.*;
import java.util.*;

public class Client {
public int port = 8083;
Socket socket = null;

public static void main(String[] args) {
 new Client(); //开始执行
}

public Client() {

try {
  socket = new Socket("127.0.0.1", port);
  new Cthread().start();

BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  String msg1;
  while ((msg1 = br.readLine()) != null) {
   System.out.println(msg1);
  }
 } catch (Exception e) {
 }
}

class Cthread extends Thread {

public void run() {
  try {

BufferedReader re = new BufferedReader(new InputStreamReader(System.in));
   PrintWriter pw = new PrintWriter(socket.getOutputStream(), true);
   String msg2;

while (true) {

msg2 = re.readLine();
    pw.println(msg2);
   }
  } catch (Exception e) {
   e.printStackTrace();
  }

}
}

}

Server.java


import java.net.*;
import java.io.*;
import java.util.*;

public class Server {
 int port;
 List<Socket> clients;
 ServerSocket server;
 public Server() {
   try {
     port = 8083;
     clients = new ArrayList<Socket>();
     server = new ServerSocket(port);
     System.out.println("服务器已启动");
     int co=1;
     while (true) {
       Socket socket = server.accept();
       clients.add(socket);
       Mythread mythread = new Mythread(socket,co);
       co++;
       mythread.start();
     }

} catch (Exception ex) {
     System.out.println("vv");
   }
 }

public static void main(String[] args) {
   new Server();
 }

class Mythread extends Thread {
   Socket ssocket;
   private int count;
   private BufferedReader br;
   private PrintWriter pw;
   public String msg;

public Mythread(Socket s,int c) {
     ssocket = s;
     count=c;
   }

public void run() {

try {
       br = new BufferedReader(new InputStreamReader(ssocket.getInputStream()));

msg = "欢迎【" +"Client "+count + "】进入聊天室!当前聊天室有【" + clients.size() + "】人";

sendMsg();

while ((msg = br.readLine()) != null) {

msg = "【" +"Client "+count + "】说:" + msg;
         sendMsg();

}
     } catch (Exception ex) {
     }
   }
   public void sendMsg() {
     try {
       System.out.println(msg);

for (int i = clients.size() - 1; i >= 0; i--) {
         pw = new PrintWriter(clients.get(i).getOutputStream(), true);
         pw.println(msg);
         pw.flush();
       }
     } catch (Exception ex) {
     }
   }
 }

}

运行结果:

Java Socket通信之聊天室功能

Java Socket通信之聊天室功能

来源:http://blog.csdn.net/LY_624/article/details/53784612

标签:Java,Socket,聊天室
0
投稿

猜你喜欢

  • springboot实现maven多模块和打包部署

    2022-01-06 00:41:15
  • 用C语言实现一个扫雷小游戏

    2022-02-24 01:35:56
  • C#强制类型转换小结

    2023-11-01 06:29:53
  • 使用c#+IMap实现收取163邮件

    2023-07-21 22:44:31
  • Java算法之时间复杂度和空间复杂度的概念和计算

    2023-06-11 17:47:56
  • Java实现邮件找回密码功能

    2022-08-18 07:12:57
  • Android Fragment实现顶部、底部导航栏

    2023-03-26 06:27:58
  • Java 导出excel进行换行的案例

    2021-07-29 04:09:36
  • Java中遍历ConcurrentHashMap的四种方式详解

    2023-11-17 08:54:41
  • C#学习笔记之适配器模式详解

    2021-06-16 14:10:50
  • mybatis如何批量添加一对多中间表

    2021-08-26 03:16:41
  • C#线程倒计时器源码分享

    2023-08-16 07:23:36
  • C# 装箱和拆箱的知识回顾

    2022-07-19 09:27:58
  • WinForm自定义函数FindControl实现按名称查找控件

    2021-09-23 17:27:25
  • Java设计模式之享元模式

    2022-01-30 19:03:28
  • Spring @Transactional注解失效解决方案

    2022-10-25 05:30:30
  • Android实现拼图小游戏

    2023-03-01 11:25:46
  • spring-boot @Component和@Bean的区别详解

    2023-06-28 16:10:36
  • SpringBoot接口中如何直接返回图片数据

    2023-04-22 13:10:24
  • RecyclerView实现纵向和横向滚动

    2023-04-03 14:50:44
  • asp之家 软件编程 m.aspxhome.com