zoukankan      html  css  js  c++  java
  • 完整的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

  • 相关阅读:
    Could A New Linux Base For Tablets/Smartphones Succeed In 2017?
    使用libhybris,glibc和bionic共存时的TLS冲突的问题
    6 Open Source Mobile OS Alternatives To Android in 2018
    Using MultiROM
    GPU drivers are written by the GPU IP vendors and they only provide Android drivers
    Jolla Brings Wayland Atop Android GPU Drivers
    How to Use Libhybris and Android GPU Libraries with Mer (Linux) on the Cubieboard
    闲聊Libhybris
    【ARM-Linux开发】wayland和weston的介绍
    Wayland and X.org problem : Why not following the Android Solution ?
  • 原文地址:https://www.cnblogs.com/grj001/p/12222994.html
Copyright © 2011-2022 走看看