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

  • 相关阅读:
    [ 原创 ] Java基础9--final throw throws finally的区别
    [ 原创 ] Java基础8--什么叫做重载
    [ 原创 ] Java基础7--Java反射机制主要提供了以下哪些功能?
    [ 转载 ] 什么是正则表达式的贪婪与非贪婪匹配
    [ 原创 ] Java基础6--构造函数和抽象类的性质
    [ 转载 ] Java中常用的设计模式
    [ 转载 ] 超详细:常用的设计模式汇总
    [ 转载 ] Java开发中的23种设计模式详解(转)
    [ 原创 ] Java基础5--abstract class和interface的区别
    MetaWeblog API
  • 原文地址:https://www.cnblogs.com/grj001/p/12222994.html
Copyright © 2011-2022 走看看