当前位置: 首页 > news >正文

云南网络网站推广河北高端网站建设

云南网络网站推广,河北高端网站建设,设计师用什么软件,网页版梦幻西游飞升攻略发送 我们的消息发送都是通过 UChannel 来处理的#xff0c;通过调用 UChannel::SendBunch 统一处理。 发送的 Bunch 是以 FOutBunch 的形式存在的。当 bReliable 为 True 的时候#xff0c;表示 Bunch 是可靠的。 发送逻辑直接从UChannel::SendBunch处开始分析 1、大小限…发送 我们的消息发送都是通过 UChannel 来处理的通过调用 UChannel::SendBunch 统一处理。 发送的 Bunch 是以 FOutBunch 的形式存在的。当 bReliable 为 True 的时候表示 Bunch 是可靠的。 发送逻辑直接从UChannel::SendBunch处开始分析 1、大小限制 UE的Bunch大小有限制 最大Bunch为64KSendBunch 的时候会去判断当前 Bunch 的大小是否超出限制。 2、Bunch处理(合并小Bunch拆分大Bunch) 同一个Channel通道可靠性一样合并后没有超过单个 Bunch 的限制可以合并为一个 Bunch。 如果是Actor初始化的包需要同步CDO信息 就不能合并。 同理如果Bunch过大就会拆分这些被拆分的 Bunch 的 bPartial 字段为1表示这只是一个包的片段 收包的时候会根据这个字段进行组包拆分后的第一个 Bunch 的bPartialInitial 值为1表示这是拆分后的第一个包 最后一个包的 bPartialFinal 为 1。 3、可靠Bunch数量限制 如果设置了可靠 Bunch 上限 GCVarNetPartialBunchReliableThreshold当本次要发送的 OutgoingBunches 的数量和之前 没收到Ack包的数量 超过阈值时会暂停复制直到收到了所有可靠消息的 Ack 当可靠列表溢出的时候连接会关闭。NumOutRec 为当前可靠的 Bunch 的数量所以可靠 Bunch 的数量最多256个。 4、可靠 Bunch 预处理 在PrepBunch中对可靠包进行预处理 OutReliable 保存着每个 Channel 的可靠 Bunch 数量会去初始化 Bunch 的通道序列号 ChSequence可以看出每个通道的可靠 Bunch 序列号是递增的。每次发送一个可靠包时 NumOutRec(当前未收到Ack的可靠包数量) 会1将Bunch加入到 OutRec发送的未确认的可靠消息数据中用于收到Nak后重传。只保存可靠的 Bunch。 5、UChannel::SendRawBunch 将ReceivedAck标记置为0 6、UNetConnection::SendRawBunch 设置 TimeSensitive 为1先判断SendBuffer(存储BunchHeader和Bunch数据)是否可以装的下这次的BunchHeader,如果装不下会调用 FlushNet 立即发送出去。然后将HeaderBunch写入SendBuffer中。 7、UNetConnection::Tick 如果有敏感标记TimeSensitive或者超时的时候会直接发送 8、UNetConnection::FlushNet 重置 TimeSensitive 并且发送Packet。 接收 1、UNetConnection::ReceivedPacket 这一步进行了丢包检测。读取数据包头信息并根据包头携带的序列号信息和最后一个成功接收到的序列号去判断序列号的增量正常情况下所有数据包都会按发出的顺序接收所有增量会相差1。如果小于1说明接收到的数据包发生了失序引擎发送的每一个数据包序列号都是唯一的不会重用这种情况下引擎会忽略无效的数据包。 如果大于1说明发生了丢包不会立即处理当前的数据会把当前的数据包加入队列 PacketOrderCache 中等待收到差值为1的包再一起处理。 2、解析数据包头 然后调用PacketNotify.Update 每个到来的数据包都需要到 PacketNotify 中更新序列号信息。 1、根据包头携带的序列号数据计算出当前确认的序列号数量然后根据 AckRecord 去更新 InAckSeqAck 2、如果超出数量上限 SequenceHistoryT::Size 256则视为收到 Nak 3、从序列号历史记录History Storage中判断是 Ack 还是 Nak然后调用对应的处理函数 3、ReceivedAck 当接收到 Ack 的时候会对当前确认的包 id 相同的 bunch 修改标志位 ReceivedAck并且从 OutRec 列表中删除已确认的消息 bunch。 4、ReceivedNak 当我们发送一个可靠的 Bunch 的时候会把它添加到 OutRec 中这是一个已发送的未确认的可靠消息列表。当接收到 Nak 的时候会为每个通道的包 id 为 NakPacketId 的未确认的可靠数据重新发送一次。丢包发生的时候只会按 Bunch 去重新发送Bunch 序列号还是原来的 Channel 序列号而之前的 Packet 是不会重用的只会生成新的 Packet以及最新的 PacketId。意味着不会重新发送之前发送的数据包也不会重用数据包序列号数据包的发送每一次都是新生成的数据包数据包序列号都是递增的不会重复。 1、由于 OutRec 只保存了可靠的数据包如果是不可靠的消息发生了丢包引擎是不会重新发送它们的。 2、这里保存的是 RawBunch如果 Bunch 是拆分的丢弃了一部分会导致整个 Bunch 的重新发送。 5、UChannel::ReceivedRawBunch 1、如果是可靠的消息但是通道序列号不是有序的则放入接收可靠消息列表 InRec 中并按通道序列号 ChSequence 顺序存储同样的接收的可靠消息列表数量 NumInRec 一样不能超过可靠缓冲区大小256RELIABLE_BUFFER。 2、调用 ReceivedNextBunch 接收完之后会再处理之前缓存的可靠消息列表 InRec按顺序处理。 6、发送Ack、Nak消息 当收到一份数据的时候我们会对数据进行确认会回复 Ack 或者 Nak写入到序列号历史记录中由于历史记录最多 256 位所以当 Ack 累计超过之后会调用 FlushNet 立即发送。同时改变敏感标志位 TimeSensitive。
http://www.hkea.cn/news/14503472/

相关文章:

  • 网站建设实训室wordpress 内存不断上升
  • 禅城区建网站公司wordpress 文章描述代码
  • 阿里云外贸建站wordpress底部菜单插件
  • 医院做网站开发上海网页设计经验培训
  • 网页设计的网站配色方案制作网页的常用软件有哪些
  • 长沙手机网站设计常州市钟楼区建设局网站
  • 网站标题权重吗wordpress 在线联系
  • 网站备案省份深圳市腾讯天游科技有限公司
  • 公司自有网站工信备案长沙互联网广告公司
  • 上海it外包莱芜网站建设自助建站优化
  • 湘潭做网站公司网页浏览器在哪里打开
  • 求职招聘网站排名前十名wordpress 主页图片
  • 高端网站建设 飞沐小网站源码
  • 上海专业高端网站建设服务公司给wordpress公告
  • 可以做任务的网站有哪些wordpress快站怎么样
  • flash交互网站页面切换制作网站制作外包公司
  • 宁波做网站优化的公司网站建设优化公司招聘
  • 龙岩市网站建设十大建筑设计公司
  • 网站开发实训步骤大丰网站建设公司
  • 网站营销力关键词排名什么意思
  • 云南网站开发培训机构排行黄冈网站建设哪家专业
  • sql数据库的网站迁移刷题网站建设
  • 设计案例展示网站制作网页的三大技术是哪些
  • 蒙阴哪有做淘宝网站的观山湖网站建设推广
  • 网站建设多少钱 小江网页设计东莞网络推广运营公司
  • 做自媒体的有哪些素材网站做网站优化的弊端
  • 南京城市规划建设展览馆网站凤凰一级a做爰片免费网站
  • 做好网站维护产品宣传网站模板
  • 免费的网站加速器wordpress文章关键词和描述
  • 马可波罗网系统优化的知识