Java网络编程Demo,使用TCP 实现简单群聊功能Groupchat,创建一个服务端,使多个客户端都能收到消息

简介: Java网络编程Demo,使用TCP 实现简单群聊功能Groupchat,创建一个服务端,使多个客户端都能收到消息

效果图:


开启服务端

54.png


客户端一


55.png


客户端二


56.png


客户端三


57.png


实现代码:


客户端类

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
public class SocketServer {
  public static List<Socket> socketList=new ArrayList<Socket>(); 
  public static void main(String[] args) throws IOException {
    ServerSocket serverSocket = new ServerSocket(8088);
    System.out.println("聊天服务已开启");
    while(true){
      //当客户端发出请求,服务端建立的通向客户端的专属通道
      Socket socket = serverSocket.accept();
      socketList.add(socket);
      new Thread(new ServerThread(socket)).start();
    }
  }
}


服务器线程类


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class ServerThread implements Runnable{
  public Socket socket;
  public ServerThread(Socket socket) {
    super();
    this.socket = socket;
  }
  @Override
  public void run() {
    try {
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
      while (true) {
        String readLine = bufferedReader.readLine();
        for (Socket item : SocketServer.socketList) {
          PrintWriter pw=new PrintWriter(item.getOutputStream());
          pw.println("用户"+socket.getPort()+"说"+readLine);
          pw.flush();
        }
      }
    } catch (Exception e) {
    }
  }
}


读取的线程类


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
public class ReaderThread implements Runnable{
  public Socket socket;
  public ReaderThread(Socket socket) {
    super();
    this.socket = socket;
  }
  @Override
  public void run() {
    try {
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
      while (true) {
        String data=bufferedReader.readLine();
        System.out.println(data);
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}


写出的线程类

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class WriterThread implements Runnable{
  public Socket socket;
  public WriterThread(Socket socket) {
    super();
    this.socket = socket;
  }
  @Override
  public void run() {
    try {
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      PrintWriter printWriter = new PrintWriter(socket.getOutputStream());
      while (true) {
        String data=br.readLine();
        printWriter.println(data);
        printWriter.flush();
      }
    } catch (Exception e) {
    }
  }
}



客户端类


import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class SocketClient {
  public static void main(String[] args) throws UnknownHostException, IOException {
    Socket socket = new Socket("127.0.0.1",8088);
    System.out.println("您已上线");
    new Thread(new WriterThread(socket)).start();
    new Thread(new ReaderThread(socket)).start();
  }
}



相关文章
|
8月前
|
JSON 移动开发 网络协议
Java网络编程:Socket通信与HTTP客户端
本文全面讲解Java网络编程,涵盖TCP与UDP协议区别、Socket编程、HTTP客户端开发及实战案例,助你掌握实时通信、文件传输、聊天应用等场景,附性能优化与面试高频问题解析。
|
8月前
|
安全 Java API
Java中的Lambda表达式:简洁与功能的结合
Java中的Lambda表达式:简洁与功能的结合
527 211
|
8月前
|
JavaScript Java 微服务
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
912 64
|
6月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
312 1
|
6月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
321 1
|
7月前
|
安全 网络性能优化 网络虚拟化
网络交换机分类与功能解析
接入交换机(ASW)连接终端设备,提供高密度端口与基础安全策略;二层交换机(LSW)基于MAC地址转发数据,构成局域网基础;汇聚交换机(DSW)聚合流量并实施VLAN路由、QoS等高级策略;核心交换机(CSW)作为网络骨干,具备高性能、高可靠性的高速转发能力;中间交换机(ISW)可指汇聚层设备或刀片服务器内交换模块。典型流量路径为:终端→ASW→DSW/ISW→CSW,分层架构提升网络扩展性与管理效率。(238字)
1766 0
|
7月前
|
存储 数据可视化 Java
Java Stream API 的强大功能
Java Stream API 是 Java 8 引入的重要特性,它改变了集合数据的处理方式。通过声明式语法,开发者可以更简洁地进行过滤、映射、聚合等操作。Stream API 支持惰性求值和并行处理,提升了代码效率和可读性,是现代 Java 开发不可或缺的工具。
146 0
Java Stream API 的强大功能
|
6月前
|
机器学习/深度学习 分布式计算 Java
Java与图神经网络:构建企业级知识图谱与智能推理系统
图神经网络(GNN)作为处理非欧几里得数据的前沿技术,正成为企业知识管理和智能推理的核心引擎。本文深入探讨如何在Java生态中构建基于GNN的知识图谱系统,涵盖从图数据建模、GNN模型集成、分布式图计算到实时推理的全流程。通过具体的代码实现和架构设计,展示如何将先进的图神经网络技术融入传统Java企业应用,为构建下一代智能决策系统提供完整解决方案。
573 0
|
8月前
|
前端开发 JavaScript Java
Java 项目实战城市公园信息管理系统开发流程与实用功能实现指南
本系统基于Java开发,采用Spring Boot后端框架与Vue.js前端框架,结合MySQL数据库,构建了一个高效的城市公园信息管理系统。系统包含管理员、用户和保洁人员三大模块,涵盖用户管理、园区信息查询、订票预约、服务管理等功能,提升公园管理效率与服务质量。
238 6
|
8月前
|
安全 Java 数据库
Java 项目实战病人挂号系统网站设计开发步骤及核心功能实现指南
本文介绍了基于Java的病人挂号系统网站的技术方案与应用实例,涵盖SSM与Spring Boot框架选型、数据库设计、功能模块划分及安全机制实现。系统支持患者在线注册、登录、挂号与预约,管理员可进行医院信息与排班管理。通过实际案例展示系统开发流程与核心代码实现,为Java Web医疗项目开发提供参考。
391 2
下一篇
开通oss服务