Java聊天室之实现聊天室客户端功能

这篇文章主要为大家详细介绍了Java简易聊天室之实现聊天室客户端功能,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以了解一下

一、题目描述

题目实现:实现聊天室客户端。运行程序,用户登录服务器后,可以从用户列表中选择单个用户进行聊天,也可以选择多个用户进行聊天。

二、解题思路

创建一个服务类:ChatClientFrame,继承JFrame类。用于进行用户登录、发送聊天信息和显示聊天信息,在该类中完成窗体界面的设计。

定义createClientSocket)方法,用于创建套接字对象、输出流对象以及启动线程对象对服务器转发的信息进行处理。

定义内部线程类ClientThread,用于对服务器端转发的信息进行处理,并显示在相应的控件中。

定义发送聊天信息的send()方法。

技术重点:

通过线程对接收到的信息进行处理,其中分为3种情况,第一种接收到的是登录用户,第二种接收到的是退出提示,第三种接收到的是消息。

使用maven-assembly-plugin插件,把引用的第三方jar包打到项目的jar包中。

启动上一题的服务端,运行服务端

启动多个客户端:

java -jar basics100-1.0-SNAPSHOT.jar

三、代码详解

引入hutool的pom,和使用maven-assembly-plugin插件

  4.0.0com.xiaoxuzhubasics1001.0-SNAPSHOT  cn.hutoolhutool-core5.6.5   maven-assembly-plugin   com.xiaoxuzhu.ChatClientFrame . jar-with-dependenciesfalse  make-assemblypackage single

ChatClientFrame

package com.xiaoxuzhu; import cn.hutool.core.io.resource.ResourceUtil; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.ObjectOutputStream; import java.net.Socket; import java.net.URL; import java.net.UnknownHostException; import java.text.DateFormat; import java.util.Date; import java.util.Vector; import javax.swing.*; /** * Description: * * @author xiaoxuzhu * @version 1.0 * * 
 * 修改记录: * 修改后版本	        修改人		修改日期			修改内容 * 2022/6/6.1	    xiaoxuzhu		2022/6/6		    Create * 
* @date 2022/6/6 */ public class ChatClientFrame extends JFrame { private JTextField tf_newUser; private JList user_list; private JTextArea ta_info; private JTextField tf_send; private ObjectOutputStream out;// 声明输出流对象 private Socket socket; private boolean loginFlag = false;// 为true时表示已经登录,为false时表示未登录 public static void main(String args[]) { System.out.println(SwingUtilities.isEventDispatchThread()); EventQueue.invokeLater(new Runnable() { public void run() { System.out.println(SwingUtilities.isEventDispatchThread()); try { ChatClientFrame frame = new ChatClientFrame(); frame.setVisible(true); frame.createClientSocket();// 调用方法创建套接字对象 } catch (Exception e) { e.printStackTrace(); } } }); } public void createClientSocket() { try { socket = new Socket("127.0.0.1", 9527);// 创建套接字对象 out = new ObjectOutputStream(socket.getOutputStream());// 创建输出流对象 SwingWorker worker=new SwingWorker() { @Override protected Void doInBackground() throws Exception { try { System.out.println(SwingUtilities.isEventDispatchThread()); BufferedReader in = new BufferedReader(new InputStreamReader( socket.getInputStream()));// 创建输入流对象 DefaultComboBoxModel model = (DefaultComboBoxModel) user_list .getModel();// 获得列表框的模型 while (true) { String info = in.readLine().trim();// 读取信息 if (!info.startsWith("MSG:")) {// 接收到的不是消息 if (info.startsWith("退出:")) {// 接收到的是退出消息 model.removeElement(info.substring(3));// 从用户列表中移除用户 } else {// 接收到的是登录用户 boolean itemFlag = false;// 标记是否为列表框添加列表项,为true不添加,为false添加 for (int i = 0; i v = new Vector();// 创建向量对象,用于存储发送的消息 Object[] receiveUserNames = user_list.getSelectedValues();// 获得选择的用户数组 if (receiveUserNames.length <= 0) { return;// 如果没选择用户则返回 } for (int i = 0; i

上一题服务端启动:

第一个客户端:小小 启动

第二个客户端:虚虚 启动

第三个客户端:竹竹 启动

小小给竹竹发消息

竹竹回复小小:

小小收到回复:

以上就是Java聊天室之实现聊天室客户端功能的详细内容,更多关于Java聊天室的资料请关注0133技术站其它相关文章!

以上就是Java聊天室之实现聊天室客户端功能的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Java