游戏中网络通信的对比
游戏制作中,不可避免的就是通信协议的问题,无论是对于客户端还是服务器端,一个很好的通信协议是必不可少的。
游戏由若联网游戏,由互动游戏等
选择通信协议的时候,主要关注:延迟低,易用,低成本等。
下面对比Tcp,udp,http,WebSocket四种协议的优缺点,特性
TCP
优点:可靠性高,全双工通信协议,开源支持多,应用较广泛,研发成本低,报文不限制(IP层会自动进行分包,重发,大小:1452Bt)
缺点:
操作系统:较耗内存,支持连接数有限。
设计:协议较复杂,自定义应用层协议。
网络:网络差情况下,延迟较高
传输:传输效率低于UDP
特征:面向连接,可靠性,全双工通信协议,基于IP层,适用于二进制。
UDP
优点:
操作系统:并发高,内存消耗较低
传输效率:效率高,网络延迟低,传输模型简单,研发成本低。
缺点:
协议不可靠,单项协议,开源较少,报文内容大小有限,不能超过1464bt
设计:协议设计较复杂
网络:网络较差的情况下,会有丢包的情况。
特征:无连接,不可靠,基于IP协议层,OSI参考模型位于传输层,最大努力交付,适用于二进制传输
HTTP
优点:协议较成熟,应用广泛、基于TCP/IP,拥有TCP优点、研发成本很低,开发快速、开源软件较多,nginx,apache,tomact等
缺点:无状态无连接、只有PULL模式,不支持PUSH、数据报文较大
特征: 基于TCP/IP应用层协议、无状态,无连接、支持C/S模式、适用于文本传输
WebSocket
优点:协议较成熟、基于TCP/IP,拥有TCP优点、数据报文较小,包头非常小、面向连接,有状态协议、开源较多,开发较快
缺点:没发现啥缺点
特征:有状态,面向连接、数据报头较小、适用于WEB3.0,以及其他即时联网通讯
协议选择
1、对于弱联网游戏,必须消除类,卡牌类的,可以使用http协议,保密性要求较高的,还可以使用https协议
2、对于实时性,交互性较高的,且team由过相关经验的,可以直接选择WebSocket协议,再者就是Tcp协议。
3、对于实时行要求较高的,且可达性要求一般的可以选择UDP协议。
4、局域网对战类,赛车类,直接用UDP协议吧(目前没有用过呢)

浙公网安备 33010602011771号