TCP数据通信全流程

元气小坏坏 提交于 2020-10-01 08:08:59

1)服务器TCP数据包通讯全流程
    (1)协议: 编解码

    (2)客户端发送数据
        ProtoGen--》生成后自动拷贝
        pb版本2

        stype
        ctype

        几个服务,就有几个代理。

        2: 服务号
        2: 命令号
        4: 用户标识(保留)
        protobuf: 数据协议体(head的长度+数据的长度)
            2:包体大小
            真正的二进制数据




    (3)服务器接收数据
        继承自Message自己写的
        @MessageMeta注解
        服务器号:module。 投递到特定的服务器上,如Auth。 投递到登陆服务器上
        命令号: cmd,如:处理登陆服务器上的什么功能。




        MessageFactory: 扫描,然后注册消息。
            Message和继承自Message类的扫描出来。
            读取@MessageMeta注解。


        module*1000 + cmd: 组合成为一个整数。
        做好映射,放到HashMap中(类--》key和key--》类 的双向映射)。
        

        Decoder和Encoder--》解析得到Message对象

        派送给对应的Controller:
            Controller + 

        每个module对应一个Controller, 然后读取方法上的参数,依次对比,如果得到了ReqXXX,则记录下来映射,这样请求过来,
            就会回调Controller中的处理函数。

        如果有@RequestMapping注解,就认为是处理某个请求命令的。

        遍历所有参数的类型,如果参数类型是一个Message,则从这个类型上,找到注解类。

        [module, cmd]-->Controller/Method对应起来。

        NettySession-->IdSession

    (4)服务器返回数据

    (5)客户端NetMgr接收到数据

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!