基于Socket通信的在线网络聊天室
文章目录项目结构clientconstansentityutilIOserveruiother大致思路演示时间:2021/4/20开发环境: jdk1.8编译器:idea2018编程语言:java源码下载:github前言:这个项目是笔者在学习完JavaSE基础后,为夯实基础所做的JavaSE实战开发。这一项目涉及的知识点有逻辑基础、面向对象、异常、集合框架、IO流、网络编程、多线程等。实现了包括
时间: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,客户端登录,可以多开。
服务器端可以看到登录,以及他们的聊天信息
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)