====================================================================================
CLIENT
    encode :
    用的方法是: AbstractMessageEncoder.encode()、PackageBodyMessageEncoder.*
    
    发送的对象是:ReqServerMsg [id=1001, num=5, param=测通了吗?]
    
    具体encode流程:
    
    buf.put(Constants.PACKAGE_TAG.getBytes("UTF-8"));//57byte的字符串
    byte[] messageByteArr = getBufArray(getMessages(message));
    buf.putInt(messageByteArr.length);//4个字节的int值
    buf.put(messageByteArr);//31个字符的数组
    
    sendToServer
====================================================================================
SERVER
    收到数据长度:    92
    用到的方法是:PackageBodyMessageUtil.messageReceived()
    
    字节大小:        57                4            4        4        4        19
    值:            tgw_l7_..        31            6001    1001    5        测通了吗?
    备注:        (包头,str)        (包体len)        协议号    id        num        param
    
    decode 结果 : ReqServerMsg [id=1001, num=5, param=测通了吗?]
    
====================================================================================
doSth
====================================================================================

    返回给CLIENT的对象是:
    RespServerMsg [a=1, b=2, c=3, testBean=[TestBean [m=33, n=44]]]
    
    encode:
    用的方法是:PackageBodyMessageUtil.encode()
    
    具体encode流程:
    byte[] messageByteArr = getBufArray(getMsgBody(message));
    buf.putInt(messageByteArr.length + 4);     // 长度(协议号+协议体)(包体len)28
    buf.putInt(message.getMsgNum());        //6002
    buf.putInt(messageByteArr.length);        //24
    buf.put(messageByteArr);                //44        33        1        3        2        1
    
    发送的数据长度为: 36
    
    backToClient
====================================================================================
CLIENT
    收到数据长度: 36
    
    用到的方法是:AbstractMessageDecoder.*、PackageBodyMessageDecoder.decodeBody()
    
    
    字节大小:        4            4        4        4        4        4        4        4        4
    值:            24+4        6002    24        44        33        1        3        2        1
    备注:            (包体len)    协议号                            (list.size)    
    
    
    decode 结果:    RespServerMsg [a=1, b=2, c=3, testBean=[TestBean [m=33, n=44]]]
====================================================================================

mina中游戏客户端服务端数据交互流程的更多相关文章

  1. hadoop rpc协议客户端与服务端的交互流程

    尽管这里是hadoop的rpc服务,但是hadoop还是做到了一次连接仅有一次认证.具体的流程待我慢慢道来. 客户端:这里我们假设ConnectionId对应的Connection并不存在.在调用ge ...

  2. angularJs中自定义directive的数据交互

    首先放官方文档地址:https://docs.angularjs.org/guide/directive 就我对directive的粗浅理解,它一般用于独立Dom元素的封装,应用场合为控件重用和逻辑模 ...

  3. [Android]使用Spring for Android改善数据交互流程

    如果开发一个和服务端有数据交互android应用,流程通常是这样的:界面收集用户数据之后,将它转换成JSON或者XML格式的字符串,以HTTP的方式提交给服务端,获得返回的文本数据,再将数据解析为ja ...

  4. Androidclient和server端数据交互的第一种方法

    网上有非常多样例来演示Android客户端和server端数据怎样实现交互只是这些样例大多比較繁杂,对于刚開始学习的人来说这是不利的.如今介绍几种代码简单.逻辑清晰的交互样例,本篇博客介绍第一种: 一 ...

  5. Vue中独立组件之间数据交互

    独立组件之间数据交互:通过自定义事件 组件A中的[数据],传递给组件B 1.创建组件A,组件B 2.组件B在实例创建完成时就开始监听事件[等待接收数据]:钩子 3.组件A中触发事件,发送数据 注意:接 ...

  6. struts2(三)---struts2中的服务端数据验证框架validate

    struts2为我们提供了一个很好的数据验证框架–validate,该框架可以很方便的实现服务端的数据验证. ActionSupport类提供了一个validate()方法,当我们需要在某一个acti ...

  7. FPGA与MATLAB数据交互高效率验证算法——仿真阶段

    之前博文是对基本设计技巧的总结和一些小设计随笔,内容有点杂,缺乏目的性.本来后续计划设计几个小项目,但导师的任务比较紧,所以为了提高效率,后续博客会涉及到很多算法方面的设计与验证的内容,主要关于OFD ...

  8. 教你如何在React及Redux项目中进行服务端渲染

    服务端渲染(SSR: Server Side Rendering)在React项目中有着广泛的应用场景 基于React虚拟DOM的特性,在浏览器端和服务端我们可以实现同构(可以使用同一份代码来实现多端 ...

  9. 测开之路一百五十四:ajax+json前后台数据交互

    在实际工作中,前后端数据交互大部分都是用的json格式,后端把数据处理完后,把json传给前端,前端再解析 项目结构 models里面加入把数据转为字典的方法 from datetime import ...

随机推荐

  1. Beennan的内嵌汇编指导(译)Brennan's Guide to Inline Assembly

    注:写在前面,这是一篇翻译文章,本人的英文水平很有限,但内嵌汇编是学习操作系统不可少的知识,本人也常去查看这方面的内容,本文是在做mit的jos实验中的一篇关于内嵌汇编的介绍.关于常用的内嵌汇编(AT ...

  2. 【BZOJ-3881】Divljak AC自动机fail树 + 树链剖分+ 树状数组 + DFS序

    3881: [Coci2015]Divljak Time Limit: 20 Sec  Memory Limit: 768 MBSubmit: 508  Solved: 158[Submit][Sta ...

  3. PHP进程通信基础——信号

    PHP进程通信基础--信号 使用信号通信.可以使用kill -l 来查看当前系统的信号类型. 每个信号所代表的的详细含义,请查看我的这篇博客:http://www.cnblogs.com/roverl ...

  4. Html中设置访问页面不在后进行其他页面跳转

    Html中设置访问页面不在后进行其他页面跳转 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" & ...

  5. Web Map Gis 开发系列索引

    Google Map API Version3 :代码添加和删除marker标记 谷歌地图地理解析和反解析geocode.geocoder详解 Google map markers 百度与谷歌地图瓦片 ...

  6. Php compiler for .NET framework

    https://phalanger.codeplex.com http://tomasp.net/blog/ducktyping-in-phalaner.aspx/ https://visualstu ...

  7. webpack踩坑之路——图片的路径与打包

    转自:http://www.cnblogs.com/ghost-xyx/p/5812902.html 刚开始用webpack的同学很容易掉进图片打包这个坑里,比如打包出来的图片地址不对或者有的图片并不 ...

  8. Web安全之SQL注入攻击技巧与防范

    http://www.plhwin.com/2014/06/13/web-security-sql/

  9. Assetbundles

    Unity5.4 Assetbundles官方说明 http://iq007.blog.163.com/blog/static/265542019201681264813653?suggestedre ...

  10. yii2 可逆加密

    加密: $data 是你要加密的内容, $secretKey 是你自己设置的salt, $encryptedData = Yii::$app->getSecurity()->encrypt ...