KBEngine官方论坛

 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 配置 开服
查看: 29|回复: 2

unity demo 中 发现并没有对长度大于65535的协议做处理

[复制链接]

14

主题

39

帖子

213

积分

中级会员

Rank: 3Rank: 3

积分
213
QQ
发表于 2019-1-9 21:16:12 | 显示全部楼层 |阅读模式
  1.   public void writeMsgLength()
  2.                 {
  3.                         if(msgtype.msglen != -1)
  4.                                 return;

  5.                         MemoryStream stream = this.stream;
  6.                         if(_curMsgStreamIndex > 0)
  7.                         {
  8.                                 stream = streamList[streamList.Count - _curMsgStreamIndex];
  9.                         }
  10.                         stream.data()[2] = (Byte)(messageLength & 0xff);
  11.                         stream.data()[3] = (Byte)(messageLength >> 8 & 0xff);
  12.                 }
复制代码
  1.   public void fini(bool issend)
  2.                 {
  3.                         if(numMessage > 0)
  4.                         {
  5.                                 writeMsgLength();

  6.                                 streamList.Add(stream);
  7.                                 stream = MemoryStream.createObject();
  8.                         }
  9.                        
  10.                         if(issend)
  11.                         {
  12.                                 numMessage = 0;
  13.                                 msgtype = null;
  14.                         }

  15.                         _curMsgStreamIndex = 0;
  16.                 }
  17.                
  18.                 public void send(NetworkInterfaceBase networkInterface)
  19.                 {
  20.                         fini(true);
  21.                        
  22.                         if(networkInterface.valid())
  23.                         {
  24.                                 for(int i=0; i<streamList.Count; i++)
  25.                                 {
  26.                                         MemoryStream tempStream = streamList[i];
  27.                                         networkInterface.send(tempStream);
  28.                                 }
  29.                         }
  30.                         else
  31.                         {
  32.                                 Dbg.ERROR_MSG("Bundle::send: networkInterface invalid!");  
  33.                         }

  34.                         // 把不用的MemoryStream放回缓冲池,以减少垃圾回收的消耗
  35.                         for (int i = 0; i < streamList.Count; ++i)
  36.                         {
  37.                                 streamList[i].reclaimObject();
  38.                         }

  39.                         streamList.Clear();
  40.                         stream.clear();

  41.                         // 我们认为,发送完成,就视为这个bundle不再使用了,
  42.                         // 所以我们会把它放回对象池,以减少垃圾回收带来的消耗,
  43.                         // 如果需要继续使用,应该重新Bundle.createObject(),
  44.                         // 如果外面不重新createObject()而直接使用,就可能会出现莫名的问题,
  45.                         // 仅以此备注,警示使用者。
  46.                         Bundle.reclaimObject(this);
  47.                 }
复制代码
send 后 没有执行其他的比如判断长度大于65535的操作
回复

使用道具 举报

14

主题

39

帖子

213

积分

中级会员

Rank: 3Rank: 3

积分
213
QQ
 楼主| 发表于 2019-1-9 21:19:54 | 显示全部楼层
希望kbe 大大帮忙确认一下
回复

使用道具 举报

5

主题

3926

帖子

214748万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2147483647

引擎扛把子

发表于 2019-1-10 10:12:23 | 显示全部楼层
现在不允许这么大的包发送给服务器。
你可以分多次发送
QQ:3603661
3603661@qq.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|KBEngine Forum

GMT+8, 2019-1-19 11:14 , Processed in 0.032164 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表