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. 使用说明
-
启动服务端:
- 运行
Server
类的main
方法,服务端将在本地60001端口上监听客户端的连接。 - 服务端窗口会显示接收到的消息和系统提示。
- 运行
-
启动客户端:
- 运行
Client
类的main
方法,客户端将连接到运行中的服务端。 - 客户端窗口会显示聊天记录,用户可以在输入框中输入消息并点击“发送”。
- 运行
-
消息交流:
- 在客户端输入框中输入消息并点击“发送”按钮,消息将被发送到服务端。
- 所有连接的客户端都会接收到该消息,并在各自的文本区域中显示。
-
清除消息:
- 在客户端界面中,可以使用“清除”按钮清空输入框内容
- 解开界面类底部的注释 //textField.setText("") ,则会一同清除聊天内容。