JAVA简单聊天室的实现

article/2025/10/23 5:16:39

目录

界面效果图

一、聊天室功能介绍?

二、功能代码

1.服务端

2.客户端


界面效果图


提示:以下是本篇文章正文内容,下面案例可供参考

一、聊天室功能介绍?

1. 、对于聊天室就是处理多个客户端发送的请求与信息,从而需要一个服务器端去处理这些客户端请求与信息,故采用的是服务器端/客户端模式(本章只讲解一个客户端与服务端的交流)。
2. 客户端与服务器端的连接:既然是多个客户端发送的请求与信息从而交给服务器端处理,那么客户端与服务器端之间需要进行连接。稍后会通过分析以及代码的方式进行详细操作

3. 客户端方面:客户端在与服务器端建立连接后,通过Socket对象获取输入输出流从而与服务器端之间进行通信。
4. 服务器端方面:服务器端的套接字ServerSocket对象在调用accept()方法侦听客户端的连接,当与客户端成功建立连接后,返回Socket对象,从而利用该Socket对象获取输入输出流从而与客户端进行通信。

二、功能代码

1.服务端

代码如下(示例):

package wdw;import java.awt.BorderLayout;import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.UIManager;public class Fwd_UI extends JFrame implements ActionListener,KeyListener {public static void main(String[] args)throws Exception {
//		设置界面的方格与系统相似(须在窗体加载之前)
//		UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");UIManager.setLookAndFeel("org.jb2011.lnf.beautyeye.BeautyEyeLookAndFeelCross");new Fwd_UI();}private JTextArea jta;private JScrollPane jsp;private JPanel jp;private JTextField jtf;private JButton jb;private BufferedWriter bh=null;public Fwd_UI() {jta=new JTextArea();jta.setEditable(false);jsp=new JScrollPane(jta);jp=new JPanel();jtf=new JTextField(10);jb=new JButton("发送");jp.add(jtf);jp.add(jb);this.add(jsp,BorderLayout.CENTER);this.add(jp,BorderLayout.SOUTH);this.setTitle("星泽聊天服务端");this.setSize(300,300);this.setLocation(500, 300);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);jb.addActionListener(this);jtf.addKeyListener(this);try {ServerSocket ServerSocket=new ServerSocket(8888);Socket Socket=ServerSocket.accept();
//			InputStream in=Socket.getInputStream();BufferedReader br=new BufferedReader(new InputStreamReader(Socket.getInputStream()));bh= new BufferedWriter(new OutputStreamWriter(Socket.getOutputStream()));String line=null;Date sb=new Date();SimpleDateFormat sdf = new SimpleDateFormat();sdf.format(sb);jta.append("\t"+sdf.format(sb)+"\n");while ((line=br.readLine())!=null) {jta.append(line+System.lineSeparator());}Socket.close();} catch (Exception e) {e.printStackTrace();}}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubwdw();}//定义一个方法private void wdw() {String text=jtf.getText();text="服务端对客户端说:"+text;jta.append(text+System.lineSeparator());try {bh.write(text);bh.newLine();bh.flush();jtf.setText("");} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}@Overridepublic void keyPressed(KeyEvent e) {// TODO Auto-generated method stubif (e.getKeyCode()==KeyEvent.VK_ENTER) {wdw();}}@Overridepublic void keyTyped(KeyEvent e) {// TODO Auto-generated method stub}@Overridepublic void keyReleased(KeyEvent e) {// TODO Auto-generated method stub}}

2.客户端

代码如下(示例):

package wdw;import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.UIManager;public class Khf_UI extends JFrame implements ActionListener,KeyListener {public static void main(String[] args)throws Exception {
//		设置界面的方格与系统相似(须在窗体加载之前)
//		UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");UIManager.setLookAndFeel("org.jb2011.lnf.beautyeye.BeautyEyeLookAndFeelCross");new Khf_UI();}private JTextArea jta;private JScrollPane jsp;private JPanel jp;private JTextField jtf;private JButton jb;private BufferedWriter bh=null;public Khf_UI() {jta=new JTextArea();jta.setEditable(false);jsp=new JScrollPane(jta);jp=new JPanel();jtf=new JTextField(10);jb=new JButton("发送");jp.add(jtf);jp.add(jb);this.add(jsp,BorderLayout.CENTER);this.add(jp,BorderLayout.SOUTH);this.setTitle("星泽聊天客户端");this.setSize(300,300);this.setLocation(500, 300);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);jb.addActionListener(this);jtf.addKeyListener(this);try {Socket Socket=new Socket("127.0.0.1", 8888);//			InputStream in=Socket.getInputStream();BufferedReader br=new BufferedReader(new InputStreamReader(Socket.getInputStream()));bh= new BufferedWriter(new OutputStreamWriter(Socket.getOutputStream()));String line=null;Date sb=new Date();SimpleDateFormat sdf = new SimpleDateFormat();sdf.format(sb);jta.append("\t"+sdf.format(sb)+"\n");while ((line=br.readLine())!=null) {jta.append(line+System.lineSeparator());}Socket.close();} catch (Exception e) {e.printStackTrace();}}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubwdw();}//定义一个方法private void wdw() {String text=jtf.getText();text="客户端对服务端说:"+text;jta.append(text+System.lineSeparator());try {bh.write(text);bh.newLine();bh.flush();jtf.setText("");} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}@Overridepublic void keyPressed(KeyEvent e) {// TODO Auto-generated method stubif (e.getKeyCode()==KeyEvent.VK_ENTER) {wdw();}}@Overridepublic void keyTyped(KeyEvent e) {// TODO Auto-generated method stub}@Overridepublic void keyReleased(KeyEvent e) {// TODO Auto-generated method stub}}
该处使用的界面美化包,需要导包。


http://chatgpt.dhexx.cn/article/MOWtPYg4.shtml

相关文章

Java网络聊天室---个人博客

Java网络聊天室 ———个人博客 一、项目简介 功能描述: 使用图形用户界面和socket通信,能实现一个聊天室中多人聊天,可以两人私聊,可以发送文件。 实现类似QQ用户注册、登录、聊天等功能。 参考git地址或博客地址&#xff1a…

Java实现ChatRoom

基于连接通信Socket、多线程的Java聊天室 1、开发环境: IDEA2018.1JDK1.8 2、实现功能: 实现了模拟登录注册、群聊、私聊、显示当前在线人数列表; 在发送信息时,会向对方发送者及显示发送时间; 显示在线人数列表…

Java聊天室

项目介绍: Java聊天室是期末设计, 阿里巴巴druidmysql多线程GUImvn项目java Socket 服务端模块:踢出聊天室:管理员可以踢出发言不当的用户。只有当开启服务端的时候,客户端才能起到作用。 客户端模块: 注册…

用Java实现简易聊天室

说明:如果一个 类,需要有界面的显示,那么该类就需要继承自JFrame,此时,该类就可以被称为一个“窗体类"。 服务端代码: package cn.qy.chat;import javax.swing.*; import java.awt.*; import java.aw…

微信小程序购物车功能实现(干货满满)

微信小程序定制好看的购物车页面,实现购物车功能,希望对您有所帮助! 1. 应用场景 2. 思路分析 3. 代码分析 4. 具体实现代码 效果截图: 1.应用场景 适用于商城、秒杀、商品购买等类型的小程序,负责将顾客浏览的商…

微信小程序微商城(八):缓存实现商品购物车功能

IT实战联盟博客:http://blog.100boot.cn 上一篇:微信小程序微商城(七):动态API实现商品分类 看效果 购物车.gif 开发计划 1、商品详情页将商品信息放入缓存 2、购物车页面读取缓存获取商品信息 3、购物车商品计算…

微信小程序开发一个小型商城(六、购物车页面)

上一篇文章:微信小程序开发一个小型商城(五、商品详情) 当我们在商品详情界面中点击添加购物后,会跳转到购物车界面,购物车界面是一个tabbar,在跳转的时候需要加上ope-type。看下购物车的静态页面把&#x…

微信小程序实现一个购物车页面的简易列表效果

本文只是简单的模仿天猫APP的购物车列表的样式效果&#xff0c;并实现了部分事件功能&#xff0c;功能并不完善&#xff0c;请降低期待观看。 天猫APP的购物车效果&#xff1a; 小程序模仿的实现效果&#xff1a; wxml部分的代码&#xff1a; <view wx:if"{{!isCartEmp…

【Python之pymysql库学习】一、分析fetchone()、fetchmany()、fetchall()(保姆级图文+实现代码)

目录 实现效果实现思路实现代码总结 欢迎关注 『Python之pymysql库学习』 系列&#xff0c;持续更新中 欢迎关注 『Python之pymysql库学习』 系列&#xff0c;持续更新中 实现效果 实现思路 其实有半数代码是创建数据库和创建数据表并插入数据这些环境配置部分我都写好了&…

fetchone、fetchall

fetchone(): 该方法获取下一个查询结果集。结果集是一个对象,读取一行结果&#xff0c;读取完指向下一行&#xff0c;到空为止 fetchall():接收全部的返回结果行&#xff0c;到空为止 fetchone() &#xff1a; 返回单个的元组&#xff0c;也就是一条记录(row)&#xff0c;如果没…

python fetchall方法_Python连接MySQL并使用fetchall()方法过滤特殊字符

python3.3从mysql里取出的数据莫名其妙有括号和逗号每天跟自己喜欢的人一起&#xff0c;通电话&#xff0c;旅行&#xff0c;重复一个承诺和梦想&#xff0c;听他第二十八次提起童年往事&#xff0c;每年的同一天和他庆祝生日&#xff0c;每年的情人节圣诞节除夕&#xff0c;也…

pdo fetchAll

作用 fetchAll()方法是获取结果集中的所有行.其返回值是一个包含结果集中所有数据的二维数组。 PDOStatement::fetchAll ([ int $fetch_style [, mixed $fetch_argument[, array$ctor_args array() ]]] ) fetch_style:控制结果的返回方式 PDO::FETCH_ASSOC 关联数组形式 PD…

记录一个常用函数fetchall()的使用过程

fetchall() 作用是返回多个元组&#xff0c;即对应数据库里的多条数据概念&#xff1b; 常见用法是 cursor.execute(‘select * from table’) value cursor.fetchall() 此时&#xff0c;print(value)则会输出以下二维元组&#xff0c;如下图 拓展&#xff1a; 同类函数fet…

Python从Oracle数据库中获取数据——fetchall(),fetchone(),fetchmany()函数功能分析

Python从Oracle数据库中获取数据——fetchall(),fetchone(),fetchmany()函数功能分析 一、fetchall()&#xff0c;fetchone()&#xff0c;fetchmany()简单介绍 1、fetchall()函数,它的返回值是多个元组,即返回多个行记录,如果没有结果,返回的是() 2、fetchone()函数,它的返回…

KITTI数据集可视化(一):点云多种视图的可视化实现

如有错误&#xff0c;恳请指出。 在本地上&#xff0c;可以安装一些软件&#xff0c;比如&#xff1a;Meshlab&#xff0c;CloudCompare等3D查看工具来对点云进行可视化。而这篇博客是将介绍一些代码工具将KITTI数据集进行可视化操作&#xff0c;包括点云鸟瞰图&#xff0c;FOV…

KITTI数据集的点云格式转PCD格式

参考文章&#xff1a;https://blog.csdn.net/xinguihu/article/details/78922005 KITTI数据集应该不用多做介绍了&#xff0c;基本上做自动驾驶的都知道这个东西。最近本人用到这个数据集想看看里面的点云长什么模样&#xff0c;却发现有点别扭&#xff0c;没有直接可以看的工…

使用kitti数据集实现自动驾驶——发布照片、点云、IMU、GPS、显示2D和3D侦测框

本次内容主要是使用kitti数据集来可视化kitti车上一些传感器&#xff08;相机、激光雷达、IMU&#xff09;采集的资料以及对行人和车辆进行检测并在图像中画出行人和车辆的2D框、在点云中画出行人和车辆的3D框。 首先先看看最终实现的效果&#xff1a; 自动驾驶视频 看了上面的…

KITTI数据集-label解析笔记

笔记摘自&#xff1a;KITTI数据集--label解析与传感器间坐标转换参数解析_苏源流的博客-CSDN博客 KITTI数据集是自动驾驶领域最知名的数据集之一。 一、kitti数据集&#xff0c;label解析 16个数代表的含义&#xff1a; 第1个字符串&#xff1a;代表目标的类别 Car, Van, Tru…

16个车辆信息检测数据集收集汇总(简介及链接)

16个车辆信息检测数据集收集汇总&#xff08;简介及链接) 转载自&#xff1a;https://blog.csdn.net/u014546828/article/details/109089621?utm_mediumdistribute.pc_relevant.none-task-blog-baidujs_baidulandingword-1&spm1001.2101.3001.4242 目录 1. UA-DETRAC …

双目网络公开数据集的特性

文章目录 概述SceneFlowKITTI 2012 & 2015ETH3D 2017Middlebury 2014 概述 参考文章&#xff1a;Rethinking Training Strategy in Stereo Matching 主流双目公开数据集有&#xff1a;SceneFlow、KITTI、ETH3D、MB。 各个双目网络主流训练数据视差分布的直方图&#xff1a;…