`
fsplove520
  • 浏览: 27990 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

基于消息包可靠协议设计

 
阅读更多
     由于最近一两年里都是在负责做手游服务器的相关内容,对中国的这种2G/3G网络收费贵,而且带宽小,很想吐槽吐槽。但对于手游来说,这种其实都还可以接受,但是对于手机来说,网络其实是相当不稳定的,比如进出电梯,切换基站,地铁来说,对手机网络影响都很大。对于手机游戏,如果是短连接的话,还好,如果是偏实时性很强,有实时战斗这类的玩法,需要采用长连接了,那么就很影响体验了,就会出现各种断线,丢包,使游戏不能流畅的玩下去。
     于是乎,在思考着如何让手游尽可能的在断线重连之后不丢包,能够比较流畅的玩下去。在这里,我们设计出了一种在tcp之上的一种基于协议包层面的确认机制。一种相对比较复杂一点,就是在客户端和服务器之间,每一个协议,都会有一个确认消息包回应,2端只有收到确认消息包,才能认为当前的消息发送成功,才能从协议队列里移除掉,否则需要缓存。另一只是只有服务器发送的包才需要确认。这种其实已经满足了基本需求,因为,客户端在网络断开的时候,客户端的各种请求是完成不了的,在重连了之后,重新请求一次即可,而服务器需要缓存没有发送成功的消息,在重连成功之后,把没有发送成功的消息重新发送一次。保证数据包不丢失,这样,客户端在重连完之后,并没有数据丢失,还是可以继续往下玩的。采用这种方案,尽可能的保证了数据不丢失,保证游戏的流畅。
     在我们的游戏中,采用的是第二种方案,因为设计上相关简单,同时满足了大部分的需求。当然,在这里只是大致提了些方案,里面其实有很多细节需要注意,也有很多坑,所以需要十分小心,大家有兴趣可以来讨论讨论
分享到:
评论

相关推荐

    基于Python实现可靠数据传输协议【100010493】

    基于UDP设计一个简单的停等协议,实现单向可靠数据传输(服务器到客户的数据传输)。 模拟引入数据包的丢失,验证所设计协议的有效性。 改进所设计的停等协议,支持双向数据传输 基于所设计的停等协议,实现一个C/S...

    java基于UDP协议的可靠通讯系统的设计与实现程序源码.rar

    Java基于UDP协议的可靠通信系统设计与实现是一个关键的网络编程课题,主要涉及到网络通信的基础原理、UDP协议的特性和如何克服其不可靠性。在这个项目中,源码分为"Client"和"Server"两个部分,分别代表客户端和...

    基于UDP的可靠传输(停等协议)

    "基于UDP的可靠传输(停等协议)"就是一个这样的例子,它通过在Python中实现停等协议来弥补UDP的不足。 停等协议(Stop-and-Wait)是一种简单但有效的错误控制协议,适用于一对一的数据传输。它的工作原理是发送方...

    基于消息队列遥测传输协议的智能家居消息中间件设计.pdf

    为了解决这一问题,李洋基于消息队列遥测传输(MQTT)协议设计了智能家居消息中间件(MOM)。MQTT是一种轻量级的消息传输协议,采用了基于主题的发布/订阅机制,能够在带宽资源有限的网络环境中提供实时可靠的消息...

    udt UDT网络传输协议开源包,是基于UDP的可靠传输协议

    UDT(User Datagram Transport)是一种高性能的、基于UDP(User Datagram Protocol)的可靠传输协议,专为大数据量的网络传输而设计。它弥补了UDP在数据可靠性方面的不足,同时尽可能保持了UDP的低延迟和高吞吐量...

    c++实现基于停等协议的可靠udp传输的即时通讯系统(MFC)

    在本文中,我们将深入探讨如何使用C++编程语言和MFC(Microsoft Foundation Classes)库来构建一个基于停等协议的可靠UDP(User Datagram Protocol)即时通讯系统。停等协议是一种简单但有效的错误控制策略,它确保...

    基于UDP 通信协议的设计与实现

    本文基于目前UDP通信的优势与不足,在参考TCP/IP协议及ISO七层协议、X.25协议的基础上,设计了一套基于UDP的通信协议,旨在实现基于UDP的可靠通信及弱连接特性。 #### 二、UDP协议的优势与不足 **1. UDP协议的优势...

    基于TCP/IP协议的Socket编程

    Java实现的Socket编程是基于TCP/IP协议的,它提供了一个可靠的数据流服务,可以实现客户端和服务器之间的数据交换。Java中的Socket类和ServerSocket类是两种基本的套接字类,Socket类用于建立客户端和服务器之间的...

    基于Python实现的可靠数据传输协议.zip

    基于UDP设计一个简单的停等协议,实现单向可靠数据传输(服务器到客户的数据传输)。 模拟引入数据包的丢失,验证所设计协议的有效性。 改进所设计的停等协议,支持双向数据传输 基于所设计的停等协议,实现一个C/S...

    基于UDP的可靠传输

    总的来说,基于UDP的可靠传输是通过一系列复杂的设计来模拟TCP的可靠性特性,但又尽可能保持UDP的低延迟和高效性。这需要开发者对网络协议有深刻的理解,并能够灵活应用各种技术来应对网络环境的挑战。

    基于网络安全机制的IEC104的协议包设计与实践.pdf

    基于网络安全机制的IEC104协议包设计不仅满足了电力调度数据通信网络的安全防护要求,而且优化了系统的经济性和稳定性。这一实践为电力系统的网络安全提供了新的思路,对于未来同类系统的安全设计具有重要的参考价值...

    一种基于UDP的可靠传输系统设计及Java实现.pdf

    本文介绍了一种基于UDP协议的可靠传输系统的设计,该系统通过在应用层增加一系列机制来提升UDP的可靠性,从而使其能够用于需要稳定和可靠数据传输的场景。系统的设计采用了Java语言进行实现,因为Java提供了跨平台的...

    java毕业论文基于UDP协议的可靠通讯系统的设计与实现.docx

    二、UDT(Reliable UDP)协议设计 为了解决UDP协议的可靠性问题,本文提出了一种新的可靠UDP协议(UDT),通过对TCP协议的模拟,设计出了UDT协议。UDT协议大大提高了数据传输的可靠性,使得聊天系统在好友互相聊天...

    基于STM 32的BACnet协议设计研究.pdf

    基于STM32的BACnet协议设计研究主要涉及了STM32微控制器及其在BACnet协议实现中的应用。STM32是ST公司生产的基于ARM Cortex-M系列处理器的32位微控制器,广泛应用于嵌入式系统和工业自动化领域。BACnet是一种用于...

    基于485总线模式的数据传输协议设计

    在基于485总线模式的数据传输协议设计中,数据通信是通过特定的命令包、数据信息头、纯数据块和主机确认信息这四个部分来实现的。这种协议旨在确保在单片机与主机之间的高效、可靠的数据交换。 1. **ComOutData...

    基于UDP的GBN协议(C语言实现)

    在IT领域,网络通信是至关重要的部分,而TCP/IP协议栈中的UDP(User Datagram...总的来说,这个基于UDP的GBN协议实现是一个很好的学习项目,它将理论知识与实践相结合,有助于提升我们在网络编程和协议设计方面的技能。

    一种基于串口通信的高可靠性应用协议设计.pdf

    为解决串口通信中的数据传输容易出错、可靠性差且容错能力低等问题,设计并实现一种串 1:2通信高可靠性应用协议,并将此协议应用在列控产品中。首先介绍串口通信协议的数据包格式, 通过在数据包格式定义中设置...

    基于TCPIP协议的网络聊天软件的设计与实现

    本篇文章将深入探讨如何利用TCP/IP协议设计并实现一个网络聊天软件。 首先,我们要理解TCP/IP协议族的基本构成。它由四层模型组成:应用层、传输层、网络层和数据链路层。在我们的网络聊天软件中,应用层负责定义...

    UDT协议-基于UDP的可靠数据传输协议---UDT实现源码

    UDT(Ultra Data Transfer)协议是一种专为大数据传输设计的高效、可靠的传输协议,它基于用户数据报协议(UDP)构建。在TCP/IP协议栈中,TCP提供了可靠的数据传输服务,但其高开销和低效率限制了在大规模数据传输...

Global site tag (gtag.js) - Google Analytics