【伯猫Java教程】网页游戏开发过程——Java与Flex的通信过程
2015-07-02 10:33
288 查看
提到通信,就要考虑两个问题——1、通信协议的选择;2、数据协议的定义;
通信协议:TCP、UDP、HTTP、FTP等等。
数据协议:json、xml、amf3等。
通信过程的开发并不简单,要开发一个健壮的通信系统,才能保证游戏的健康运行,一般在开发过程中要考虑下面几个问题。
通信粘包:
出现粘包现象的原因是多方面的,它既可能由发送方造成,也可能由接收方造成。发送方引起的粘包是由TCP协议本身造成的,TCP为提高传输效率,发送方往往要收集到足够多的数据后才发送一包数据。若连续几次发送的数据都很少,通常TCP会根据优化算法把这些数据合成一包后一次发送出去,这样接收方就收到了粘包数据。接收方引起的粘包是由于接收方用户进程不及时接收数据,从而导致粘包现象。这是因为接收方先把收到的数据放在系统接收缓冲区,用户进程从该缓冲区取数据,若下一包数据到达时前一包数据尚未被用户进程取走,则下一包数据放到系统接收缓冲区时就接到前一包数据之后,而用户进程根据预先设定的缓冲区大小从系统接收缓冲区取数据,这样就一次取到了多包数据。粘包情况有两种,一种是粘在一起的包都是完整的数据包,另一种情况是粘在一起的包有不完整的包,此处假设用户接收缓冲区长度为m个字节。
通信粘包的处理,包指逻辑上的数据包,也就是我们发送的一个完整业务消息包。粘包有两种情况,一种是粘在一起的都是完整的包,另一种是粘在一起不完整的包。不是所有的粘包都需要处理,若传输的数据为不带结构的连续流数据(文件传输),则不必分包。如果是带结构的数据,则要进行分包处理。
参考一下Mina和netty2的实现,像Mina和Netty2都提供了粘包处理类可供使用,像Mina的CumulativeProtocolDecoder类,Netty2的LengthFieldBasedFrameDecoder。
数据协议:
选择数据协议没有统一标准,根据效率和大小自由选择。
网络安全:
对通信数据加密一般常RSA对byte流加密,FLOOD验证,IP黑名单验证都是必须考虑到的。
4000
通信协议:TCP、UDP、HTTP、FTP等等。
数据协议:json、xml、amf3等。
通信过程的开发并不简单,要开发一个健壮的通信系统,才能保证游戏的健康运行,一般在开发过程中要考虑下面几个问题。
通信粘包:
出现粘包现象的原因是多方面的,它既可能由发送方造成,也可能由接收方造成。发送方引起的粘包是由TCP协议本身造成的,TCP为提高传输效率,发送方往往要收集到足够多的数据后才发送一包数据。若连续几次发送的数据都很少,通常TCP会根据优化算法把这些数据合成一包后一次发送出去,这样接收方就收到了粘包数据。接收方引起的粘包是由于接收方用户进程不及时接收数据,从而导致粘包现象。这是因为接收方先把收到的数据放在系统接收缓冲区,用户进程从该缓冲区取数据,若下一包数据到达时前一包数据尚未被用户进程取走,则下一包数据放到系统接收缓冲区时就接到前一包数据之后,而用户进程根据预先设定的缓冲区大小从系统接收缓冲区取数据,这样就一次取到了多包数据。粘包情况有两种,一种是粘在一起的包都是完整的数据包,另一种情况是粘在一起的包有不完整的包,此处假设用户接收缓冲区长度为m个字节。
通信粘包的处理,包指逻辑上的数据包,也就是我们发送的一个完整业务消息包。粘包有两种情况,一种是粘在一起的都是完整的包,另一种是粘在一起不完整的包。不是所有的粘包都需要处理,若传输的数据为不带结构的连续流数据(文件传输),则不必分包。如果是带结构的数据,则要进行分包处理。
参考一下Mina和netty2的实现,像Mina和Netty2都提供了粘包处理类可供使用,像Mina的CumulativeProtocolDecoder类,Netty2的LengthFieldBasedFrameDecoder。
数据协议:
选择数据协议没有统一标准,根据效率和大小自由选择。
网络安全:
对通信数据加密一般常RSA对byte流加密,FLOOD验证,IP黑名单验证都是必须考虑到的。
4000
相关文章推荐
- Java实现二叉搜索树节点的删除
- 安装两个jdk后eclipse启动不了的一个情况
- 如何卸载eclipse中的ADT
- JNI字段描述符“([Ljava/lang/String;)V”
- 《Java并发编程实践》笔记7——非阻塞同步算法
- Java编程规范
- 《Java并发编程实践》笔记7——非阻塞同步算法
- Java中基础类库使用
- 认识java语言
- 《Java课程实习》日志(周四)
- JAVA实训课第三天
- 《Java课程实习》日志(周二)
- java WEB log4j 配置
- eclipse编译异常修正:the project cannot be built until its prerequisite...
- Spring MVC 文件下载 - 兼容IE
- Java中都通用文件下载(ContentType、文件头、response、out四步骤)
- Java float、double使用注意问题
- 重踏学习Java路上_Day15(对象数组,集合类,列表)
- java总结之 : ++i和i++的区别
- Thinking in java(11章 对象的集合)