完整的ChatRoom聊天室代码
完整的ChatRoom聊天室代码
原创Viki渡清欢 发布于2019-04-16 22:37:52 阅读数 537 收藏
展开
概述
上节说到消息粘包和数据不完整的问题未解决,也就是数据传输缓冲区固定,一旦数据长度超出缓冲区大小,便会出现问题。
解决方案就是,把每条消息封装成一个包,包包含包头和包体,包头封装要发送数据的长度,包体封装数据。
创建两个变量记录当前读到的位置和数据总长度,读取部分到缓冲区,若读到结尾结束,未到结尾继续读;接收类似
不包含文件传输功能
运行环境
IDEA
目录结构
多模块项目
lib-clink --工具包
box --数据传输包构建包
StringReceivePacket --接收包构建类
StringSendPacket ---发送包构建类
core --核心类包
Connector --客户端连接类
IoArgs --Buffer封装类
IoContext --上下文类,统筹
IoProvider --IO方法接口,即数据收发方法接口
Packet --数据传输包公共类
ReceiveDispather --接收调度类
ReceivePacket --接收包
Receiver --数据接收者
SendDispather --发送调度类
Sender --数据发送者
SendPacket --发送包
Impl --方法使用接口包
async --数据处理方法包
AsyncReceiveDispather --数据接收方法类
AsyncSendDispather --数据发送方法类
IoSelectorProvider --IoProvider的实现类
SocketChannelAdapter --数据收发具体实现类
utils --基本工具包
ByteUtils --byte数据的工具类
CloseUtils --关闭操作工具类
Clink --clink总类
sample-client --客户端
bean --数据格式封装包
ServerInfo --服务器信息封装类
Client --客户端启动总类
TCPClient --TCP数据发送类
UDPSearcher --UDP搜索类
sample-foo --协议包
constants --协议规定包
TCPConstants --TCP协议规定端口等
UDPConstants --UDP协议规定端口等
sample-server --服务端
handle
ClientHandler --客户端线程类
Server --服务器启动总类
TCPServer --TCP服务端
UDPProvider --UDP接收广播回送消息类
代码
注释也在里边了
链接: 百度网盘 提取码: g4pz
包含文件传输功能的聊天室代码
链接: 百度网盘 提取码: qn42
————————————————
版权声明:本文为CSDN博主「Viki渡清欢」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42089175/article/details/89343529
完整的ChatRoom聊天室代码相关推荐
- C++网络:IO复用epoll服务器-附带网络聊天室代码实例
//! //! C++网络:IO复用epoll服务器-附带网络聊天室代码实例 //! //! ===== IO复用简介 ===== //! 众所周知,在LINUX中有一切皆文件的说法,将文件视为一种I ...
- C++写的一个聊天室代码,用于XEIM开源即时通讯软件上的
// C++写的一个聊天室代码,用于XEIM开源即时通讯软件上的,欢迎大家一起交流. // XEIM_ChatroomDlg.cpp : implementation file // [即时通讯软件] ...
- GTK+实现linux聊天室代码详解-clientr端
查看原代码请点击此超链接 注意!!此聊天室对红帽无兼容.需在其他linux系统上运行,如"深度". 加油学习! GTK+实现linux聊天室代码详解-server端:GTK+实现l ...
- Web开发了一个完整精美的聊天室(登录部分引入了Vue技术)
前端JavaScript HTML CSS 为了减小JavaScript动态操作节点的开支消耗,引入了Vue技术 数据库 MySQL 保存聊天信息.用户名.用户密码.采用JDBC编程 后端 serv ...
- 完整互动视频聊天室全部源代码出售
因本人急差资金维持自己新产品的研发,特向大家献出原创产品--环球在线互动视频聊天室!希望能得到大家的支持和鼓励!刘兆鹏先谢谢大家了. 完全免插件,保证功能完整的在线互动视频聊天室,可以轻松与各种网页程 ...
- 简易聊天室代码分享 js+socket.io
先言 这我以前写的,这里就是单纯分享下代码,不算正经文章.效果如下,前端用一个单html文件.然后后端用node.js和socket.io,也是只用一个单js文件就好.这里可以看下代码的实现逻辑就好, ...
- java聊天室代码_java聊天室的实现代码
本文实例为大家分享了java实现聊天室的具体代码,供大家参考,具体内容如下 聊天室界面: 源码: public class ClientFrame extends Frame { private Te ...
- java聊天室代码实训总结_java实训聊天系统报告总结
金融实训报告总结范文 java实训聊天系统报告,实训能让人收获良多,下面带来,欢迎阅读参考. 1 经过三个星期的学习,我们终于把这个图书馆管理系统做出来了,虽然做得不是很完美,但是却是我们这个小组的每 ...
- chatroom聊天室—服务端(基于golang)
博客地址 golang,tcp服务--客户端 源码下载 功能支持 |1.修改用户名----dorenamerenamerename"修改的用户名" | 例如:修改用户名为java, ...
最新文章
- C语言接收一个整数划分成5的倍数,整数划分为连续整数;整数划分
- 深入理解JavaScript的变量作用域
- jsp页面返回文本时产生大量空格的解决办法
- java 多态与重载的区别_java实现多态 方法的重写和重载的区别
- 关于FD.io VPP的最新消息
- linux eclipse web项目,Eclipse中web项目部署至Tomcat步骤
- 汇编语言王爽---第四版
- java常识(小细节)
- eclipse 自动下载源码插件
- Excel文件转换为XML以及Linux文件编码格式转换
- roundcube邮箱手机端_企业邮箱申请后如何登录
- [动态树] HDOJ 5467 Clarke and hunger games
- #AMBER 分子动力学软件Amber18介绍与基础教程(持续更新)
- java使用freemark实现word(.doc/.docx)/pdf生成和导出(附源码和模板文件)
- VS Code插件Code Runner使用python虚拟环境
- 深入理解Andorid 卷I 第五章
- Pandas(一)—— Pandas基础
- 嵌入式系统与通用计算机操作系统的区别
- 网络 | email
- ubuntu apt-get 安装amd显卡驱动