当前位置: 首页 > article >正文

java 客户端、服务端聊天系统 文字交流 (多线程)

目录

1、效果:

2、介绍:

1. 程序概述

2. 主要组件

3. 功能

4. 技术细节

5. 使用说明

3、代码:

(1)服务端界面:

(2)服务端:

(3)客户端界面:

(4)客户端:


1、效果:

非多线程:Java 服务端、客户端(间)文字交流(含图形用户界面,非多线程)_java编写带图形界面的代码,有服务端和客户端-CSDN博客

2、介绍:

1. 程序概述

        该程序实现了一个简单的文字交流聊天室,允许多个客户端通过网络与服务端进行实时消息交流。

        服务端负责管理连接的客户端,广播消息并处理连接和断开操作,而客户端则提供用户界面供用户输入和接收消息。

        (运行一次客户端程序即生成一个客户端窗口)

2. 主要组件

  • 服务端(Server):

    • 使用 ServerSocket 类来监听客户端的连接请求。
    • 每个连接的客户端由一个 ClientHandler 线程处理,负责接收和发送消息。
    • 维护一个 ArrayList 来存储所有连接的客户端处理器,以便能够向所有客户端广播消息。
  • 客户端(Client):

    • 通过 Socket 类连接到服务端。
    • 提供用户界面 (ClientDemo 类) 供用户输入消息并显示接收到的消息。
    • 通过输入流和输出流与服务端进行通信。

3. 功能

  • 消息发送与接收:

    • 客户端可以输入消息并通过“发送”按钮将其发送到服务端。
    • 服务端会将消息广播给所有已连接的客户端,包括发送者自己。
  • 用户通知:

    • 当新的客户端连接或断开时,服务端会通知所有已连接的客户端。
    • 在服务端和客户端的用户界面中,都会显示相关的系统消息,如连接成功、发送失败等。
  • 界面设计:

    • 使用 JFrame 和 JPanel 设计用户界面,包含文本区域、输入框和按钮。
    • 界面简洁易用,用户友好。

4. 技术细节

  • 网络通信:

    • 使用 TCP/IP 协议进行网络通信,确保消息的可靠传输。
    • 客户端通过 DataInputStream 和 DataOutputStream 类进行数据的读写,支持 UTF 编码的字符串传输。
  • 线程管理:

    • 服务端和客户端均在独立线程中运行,以保证界面响应和网络通信的流畅性。
    • Thread 类用于处理并发连接,每个客户端的消息处理都在单独的线程中进行。
  • 时间戳:

    • 每条消息前会附带发送时间的时间戳,以便用户可以查看消息的发送时间。

5. 使用说明

  1. 启动服务端:

    • 运行 Server 类的 main 方法,服务端将在本地60001端口上监听客户端的连接。
    • 服务端窗口会显示接收到的消息和系统提示。
  2. 启动客户端:

    • 运行 Client 类的 main 方法,客户端将连接到运行中的服务端。
    • 客户端窗口会显示聊天记录,用户可以在输入框中输入消息并点击“发送”。
  3. 消息交流:

    • 在客户端输入框中输入消息并点击“发送”按钮,消息将被发送到服务端。
    • 所有连接的客户端都会接收到该消息,并在各自的文本区域中显示。
  4. 清除消息:

    • 在客户端界面中,可以使用“清除”按钮清空输入框内容
    • 解开界面类底部的注释 //textField.setText("")  ,则会一同清除聊天内容。

3、代码:

(1)服务端界面:


                

http://www.kler.cn/a/403375.html

相关文章:

  • windows的WSL Ubuntu子系统重置root或其他用户的密码
  • [Realtek sdk-3.4.14b] RTL8197FH-VG新增jffs2分区操作说明
  • 51c嵌入式~IO合集2
  • python成长技能之正则表达式
  • 上海市计算机学会竞赛平台2022年8月月赛丙组屏幕比例
  • 音频信号采集前端电路分析
  • 【C++ 算法进阶】算法提升十七
  • 爬取网易云音乐热歌榜:从入门到实战
  • 『云产品最佳实践』MySQL 搭建操作指南
  • 【LeetCode面试150】——1两数之和
  • android 动画原理分析
  • “Kafka面试攻略:核心问题与高效回答”
  • 【Rabbitmq篇】RabbitMQ⾼级特性----消息确认
  • 百度智能云千帆大模型平台引领企业创新增长
  • 数组作为函数参数--选择排序
  • 杰发科技AC7801——ADC定时器触发的简单使用
  • debian下查看端口号命令
  • MATLAB绘图基础11:3D图形绘制
  • GetVolumeInformation函数使用记录
  • Flutter:TweenAnimationBuilder自定义隐式动画
  • Telegram bot Mini-App开发实践---Telegram简单介绍与初始化小程序获取window.Telegram.WebApp对象并解析
  • 解读缓存问题的技术旅程
  • 利用Python爬虫获取淘宝店铺详情
  • windows 操作系统下载 Android源码教程
  • k8s error uploading crisocket处理过程
  • 从机器人到高速线,线缆行业如何提升竞争力