游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5025|回复: 3

封包的填充机制

[复制链接]

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2012-7-8 11:42:00 | 显示全部楼层 |阅读模式
1.充分自适应化

sock<<ID<<NAME<<SEX<<HP<<MP<<EXP;

优点:自动化强、简单、写着方便
缺点:有些时候依然无法自动化,而且会让程序员忽视数据的类型。客户端如与服务器端不一样,后果很严重。

2.严格指定格式法

sock.writeUint64(id);
sock.writeUTF8(NAME);
sock.writeBool(SEX);
sock.writeUint32(HP);
sock.writeUint32(MP);
sock.writeUint32(EXP);

优点:要求开发者严格指定数据类型,不容易出错
缺点:写着太累

2

主题

164

帖子

320

积分

中级会员

Rank: 3Rank: 3

积分
320
发表于 2012-7-8 12:05:00 | 显示全部楼层

Re:封包的填充机制

第二种适合现在换皮,人员流动大的网游

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
 楼主| 发表于 2012-7-9 11:36:00 | 显示全部楼层

Re:封包的填充机制

其实还有一部分人,喜欢使用另外一种:
#pragam pack(push)
#pragam pack(1)
struct userinfo
{
uint64 id;
char name[32];
bool sex;
uint32 hp,mp,exp;
}
#pragam pack(pop)

sock.write(&userinfo,sizeof(userinfo));或
sock.write(userinfo);//使用模板自适应,转为上一行方式

优点:写着方便
缺点:对于可变长度数据支持不方便

71

主题

1330

帖子

2585

积分

金牌会员

Rank: 6Rank: 6

积分
2585
发表于 2012-7-9 13:30:00 | 显示全部楼层

Re:封包的填充机制

结构体方案,貌似对字符串支持不够好。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-11-21 20:46

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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