• 完整的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

  • 相关阅读:
    HSV 量化
    小议:部署SharePoint 2013时,无法连接SQL Server问题
    BZOJ 1492 货币兑换 cdq分治或平衡树维护凸包
    初识ASP.NET---一般处理程序
    Vue.js
    jQuery内部原理和实现方式浅析
    关于js中namespace命名空间模式
    MutationObserver 监听DOM树变化
    TCP/UDP常见端口参考
    运算符优先级
  • 原文地址:https://www.cnblogs.com/grj001/p/12222994.html
Copyright © 2020-2023  润新知