基于Socket通信的在线网络聊天室


时间:2021/4/20
开发环境: jdk1.8
编译器:idea2018
编程语言:java
源码下载: github

前言:这个项目是笔者在学习完JavaSE基础后,为夯实基础所做的JavaSE实战开发。这一项目涉及的知识点有逻辑基础、面向对象、异常、集合框架、IO流、网络编程、多线程等。实现了包括登录、服务器监控、群聊私聊、发送图片、抖动、改变字体在内的功能。

项目结构

在这里插入图片描述

整个项目大体分为服务端和客户端,cilent中就是客户端的功能,而server中便是服务器。下面,详细介绍一下各个文件。

client

其中ChatFrame是使用Swing组件做的聊天主界面,其中设置聊天框的大小以及排版等。
CilentHandler是客户端处理器,用来处理不同请求,给与不同相应,如登陆处理、聊天信息处理等。
DouDong是用来实现窗口抖动的类。
FaceFrame是发送表情时的表情选择界面。
LoginFrame当然就是登陆界面了

constans

Constans这个文件是用来存放一些常数参数。

entity

ChatStatus是一个枚举类,用来标志不同的状态。
FontStyle 是将字体封装称一个实体类
ServerInfoBean是服务器参数
TransferInfo将聊天数据封装

util

FontSupport文件提供包装字体和解析字体的方法

IO

IOStream将读写消息的方法进行封装。

server

ChatServer为服务器
ServerFrame为服务器界面
SeverHandler为服务器处理器

ui

OnlineUserPanel是服务器中在线用户列表的版面
ServerInfoPanel是服务器参数

other

background中存放表情图片以及背景图
user.txt中存放账号密码,因为这里是一个在线聊天室,所以就暂时没用数据库。

大致思路

这个项目是基于Socket通信的在线网络聊天室,服务通过主线程接收请求,再分配给子线程处理。
登陆成功后,通过map保留在线用户和它对应的socke。在下线时将其剔除。
服务器和客户端都通过枚举类来识别状态处理不同消息。
改变字体是通过将每一个字都封装成一个对象,在发送过后又进行解析。
可能逻辑不是特别清楚,请大家见谅,欢迎一起讨论。

演示

运行chatServer,服务器只能开一个。
运行LoginFrame,客户端登录,可以多开。
在这里插入图片描述

服务器端可以看到登录,以及他们的聊天信息
在这里插入图片描述

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

降温vae+

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值