【手游项目4】手动拆包逻辑
2023-09-14 09:06:30 时间
比如我们和前端互通的包大小限制是4K,如果发一个大于4K的包就无法发送,这时候就需要和前端拆包和包。
bool LobbyServer::SendPbMsgToClient(PlayerNode *lpPlayerNode, unsigned short type, void *buf, long len, int end)
{
__log(_ERROR, __FUNCTION__, "type[%d],len[%d],end[%d]", type, len, end);
tagNetMsg pNetMsg;
memcpy(&pNetMsg, buf, sizeof(tagNetMsg));
pNetMsg.header.identity = IDENTIFY_VER;
pNetMsg.header.encode = ENCODE_NONE;
pNetMsg.header.length = len;
pNetMsg.header.version = end;
pNetMsg.header.reserve = ENCODE_AES;
pNetMsg.header.type = type;
len += sizeof(tagMsgHeader);
return SendData(lpPlayerNode, type, &pNetMsg, len);
}
bool LobbyServer::SendBigPbMsgToClient(PlayerNode *lpPlayerNode, unsigned short type, DataPacket &strDataPacket)
{
int test_buff_size = MAX_BUFF_SIZE;
int nLength = strDataPacket.getSize();
int i = 0;
do
{
if (test_buff_size < nLength )
{
tagNetMsg sendDataStr;
memcpy(sendDataStr.buff, strDataPacket.getPositionPtr(i*test_buff_size), test_buff_size);
SendPbMsgToClient(lpPlayerNode, type, &sendDataStr, test_buff_size, 0);
}
else
{
tagNetMsg sendDataStr;
memcpy(sendDataStr.buff, strDataPacket.getPositionPtr(i*test_buff_size), nLength);
SendPbMsgToClient(lpPlayerNode, type, &sendDataStr, nLength, 1);
}
nLength = nLength - test_buff_size;
i++;
} while (0 < nLength);
}
相关文章
- 组合逻辑的Glitch与时序逻辑的亚稳态
- 【AIX 命令学习】复制逻辑卷 cplv
- 新闻发布项目——业务逻辑层(commentServiceImpl)
- 新闻发布项目——业务逻辑层(newsTbServiceImpl)
- 新闻发布项目——业务逻辑层(UserServiceImpl)
- 新闻发布项目——业务逻辑层(newsTbServiceImpl)
- 新闻发布项目——业务逻辑层(categoryTBService)
- 新闻发布项目——业务逻辑层(newsTbService)
- 新闻发布项目——业务逻辑层(UserService)
- vue-element-admin项目的mock逻辑
- 使用ST05研究customer product id存储逻辑
- Atitit 提升开发效率 声明式编程范式 目录 1. 声明式编程体系树1 1.1. 声明式(对比:指令式,,主要包括 函数式,逻辑式编程)2 1.2. 声明式编程:表达与运行分离3 1.3
- SAP OData Gateway里uri type为metadata的请求处理逻辑
- Angular 应用 bootstrapModule 映射的 app Component 的初始化逻辑
- ML之LoR&SGD:基于LoR(逻辑回归)、SGD梯度下降算法对乳腺癌肿瘤(10+1)进行二分类预测(良/恶性)
- 华为云·云享专家公开课:45分钟掌握Python项目部署与调度核心逻辑直播
- 5.4.1 jmeter组件—逻辑控制器-简单控制器、IF控制器、事务控制器、循环控制器、交替控制器
- 【基础知识】 ~ 指针、链表、二叉树、堆栈、反馈电路、占空比、流水线、数字/模拟电路、数模转换、可编程逻辑器件、波特率、差分信号
- 全干工程师神器 - Jmeter 03 - 常见逻辑控制器