当前位置: 代码迷 >> 综合 >> TCP数据通信全流程
  详细解决方案

TCP数据通信全流程

热度:66   发布时间:2024-02-24 07:52:02.0

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接收到数据

  相关解决方案