# Java基于多线程和NIO实现聊天室
- 涉及到的技术点
- 线程池ThreadPoolExecutor
- 阻塞队列BlockingQueue,生产者消费者模式
- Selector
- Channel
- ByteBuffer
- ProtoStuff 高性能序列化
- HttpClient连接池
- Spring依赖注入
- lombok简化POJO开发
- 原子变量
- 内置锁
- CompletionService
- log4j+slf4j日志
- 实现的功能
- 登录注销
- 单聊
- 群聊
- 客户端提交任务,下载图片并显示
- 上线下线公告
- 在线用户记录
- 批量下载豆瓣电影的图片,并打为压缩包传输给客户端
- 客户端使用方式:
- 登录:默认用户名是user1-user5,密码分别是pwd1-pwd5
- 例:打开客户端后输入用户名为user1,密码为pwd1
- 注销:关闭客户端即可
- 单聊:@username:message
- 例:@user2:hello
- 群聊:message
- 例:hello,everyone
- 提交任务:task.file:图片的URL / task.crawl_image:豆瓣电影的id[?imageSize=n] 可以加请求参数
- 例1:task.file:https://img1.doubanio.com/view/movie_poster_cover/lpst/public/p2107289058.webp
下载完毕后会弹出一个框,输入想将其保存到的路径,比如E:/img.webp
- 例2:task.crawl_image:1292371?imageSize=2
下载完毕后在弹出的框中输入E:/images.zip
- 假设用户输入都是符合格式的
- 尽可能提高程序的健壮性,对各种异常情况进行处理
- 不得不承认的是,客户端做的很粗糙,主要开发目的还是练习Java的多线程和NIO
没有合适的资源?快使用搜索试试~ 我知道了~
Java NIO+多线程实现聊天室
共50个文件
java:40个
xml:5个
md:1个
需积分: 2 0 下载量 6 浏览量
2023-10-30
18:43:14
上传
评论
收藏 7.53MB ZIP 举报
温馨提示
涉及到的技术点 线程池ThreadPoolExecutor 阻塞队列BlockingQueue,生产者消费者模式 选择器 渠道 字节缓冲区 ProtoStuff 高性能序列化 HttpClient连接池 Spring依赖注入 lombok简化POJO开发 原子指标 内置锁 竣工服务 log4j+slf4j日志 实现的功能 登录注销 单聊 群聊 客户端提交任务,下载图片并显示 上线下线公告 在线用户记录 批量下载豆瓣电影的图片,并打成压缩包传输给客户端 客户端使用方式: 登录:默认用户名是user1-user5,密码分别是pwd1-pwd5 例:打开客户端后输入用户名为user1,密码为pwd1 注销:关闭客户端即可 单聊:@用户名:留言 例如:@user2:你好 群聊:留言 例如:大家好 提交任务:task.file:图片的URL / task.crawl_image:豆瓣电影的id[?imageSize=n] 可以添加请求参数 例1:task.file: https://img1.doubanio.com/view/movie_poster_cover/lpst/public/
资源推荐
资源详情
资源评论
收起资源包目录
Chat-master 2.zip (50个子文件)
Chat-master
pom.xml 9KB
chat-client
pom.xml 2KB
src
main
java
cn
sinjinsong
chat
client
ChatClient.java 12KB
chat-server
pom.xml 6KB
src
test
java
cn
sinjinsong
chat
server
ChatServerTest.java 539B
main
resources
applicationContext.xml 930B
log4j.properties 719B
java
cn
sinjinsong
chat
server
handler
message
MessageHandler.java 1KB
impl
LoginMessageHandler.java 4KB
TaskMessageHandler.java 1KB
LogoutMessageHandler.java 3KB
BroadcastMessageHandler.java 1KB
NormalMessageHandler.java 3KB
task
file
FileTaskHandler.java 2KB
BaseTaskHandler.java 1KB
crawl
CrawlImageTaskHandler.java 3KB
ImageThread.java 916B
task
TaskManagerThread.java 3KB
ChatServer.java 9KB
http
HttpConnectionManager.java 3KB
user
UserManager.java 2KB
property
PromptMsgProperty.java 930B
exception
TaskException.java 360B
handler
InterruptedExceptionHandler.java 1KB
TaskExceptionHandler.java 2KB
factory
ExceptionHandlingThreadFactory.java 603B
util
SpringContextUtil.java 1KB
ImageURLCrawlerUtil.java 4KB
RequestParser.java 943B
common
pom.xml 5KB
src
main
java
cn
sinjinsong
common
enumeration
MessageType.java 645B
ResponseType.java 596B
TaskType.java 327B
ResponseCode.java 971B
util
ZipUtil.java 1KB
ProtoStuffUtil.java 2KB
DateTimeUtil.java 1KB
FileUtil.java 591B
domain
Message.java 302B
TaskDescription.java 353B
Request.java 329B
Response.java 304B
ResponseHeader.java 456B
MessageHeader.java 448B
User.java 406B
Task.java 448B
Java Concurrent专题.docx 7.59MB
.gitignore 257B
README.md 2KB
WechatIMG6903.jpg 123KB
共 50 条
- 1
资源评论
技术小羊
- 粉丝: 849
- 资源: 114
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 自己写的一个很小的工具,用于替换文件的扩展名 文件扩展名匹配的才会被替换,如果不指定原始扩展名,将修改所有文件的扩展名为新扩展名 如果新扩展名为空,则替换后文件将没有扩展名
- nginx整合lua脚本demo
- 欧标TYPE 2桩端充电枪
- (22782460)单片机设计(详细教程MSP430.zip
- UE-ORCA.zip
- (11696858)条形码生成打印
- 个人使用资源,请勿下载使用
- (180014056)pycairo-1.21.0-cp37-cp37m-win-amd64.whl.rar
- (3268844)3G无线基本知识.pdf
- 捷米特JM-PN-EIP(Profinet转Ethernet-IP)应用案例.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功