如何修改游戏服务器数据包,游戏数据包的定义
在网络游戏中,会涉及到数据传送,所以就有一个要解决的问题,如何定义数据包格式,就目前我所知道的数据定义方式描述一下,欢迎各位高手指点,
第一种方式:
定义数据头:
//网络包头
typedef struct PacketHeader
{
byte id[4]; //u_int32 lb
byte len[4]; //u_int32 lb
byte version[2]; //u_int16 lb
byte type[2]; //u_int16 lb
}PacketHeader;
定义数据体:
//网络数据包体
class CPackage
{
public:
CPackage(void);
//CPackage(byte* pParam, int nLen);
~CPackage(void);
public:
u_int16 GetType();
void SetType(u_int16 nType);
DWORD GetLen();
void SetLen(int nLen);
tstring GetContent();
void SetContent(tstring strContent);
virtual void* GetPackage();
void SetBuf(byte* pParam);
virtual byte* GetBuf(u_int32 nLen);
protected:
u_int16 m_nType;
int m_nLen; //这里数据长度代表的是,长度以后要取的字节的个数
tstring m_strContent;
tstring m_strBuf;
byte* m_pBuf;
PacketHeader m_pHeader;
};
在数据包里面包含 包头, 用函数来实现对包头和包内容的操作。
第二种定义方式:
//网络包头
typedef struct PacketHeader
{
byte id[4]; //u_int32 lb
byte len[4]; //u_int32 lb
byte version[2]; //u_int16 lb
byte type[2]; //u_int16 lb
}PacketHeader;
定义数据体:
//网络数据包体
class CPackage: public PacketHeader
{
public:
CPackage(void);
//CPackage(byte* pParam, int nLen);
~CPackage(void);
public:
u_int16 GetType();
void SetType(u_int16 nType);
DWORD GetLen();
void SetLen(int nLen);
tstring GetContent();
void SetContent(tstring strContent);
virtual void* GetPackage();
void SetBuf(byte* pParam);
virtual byte* GetBuf(u_int32 nLen);
protected:
u_int16 m_nType;
int m_nLen; //这里数据长度代表的是,长度以后要取的字节的个数
tstring m_strContent;
tstring m_strBuf;
byte* m_pBuf;
};
这两种方式的区别,就是一个用包含包头,一个用派生。欢迎有更好解决办法的朋友写出来分享一下.
如何修改游戏服务器数据包,游戏数据包的定义相关推荐
- 游戏服务器维护重启,游戏服务器需要定期重启吗
游戏服务器需要定期重启吗 内容精选 换一换 监控数据上报功能可以将系统中采集到的监控数据写入到文本文件,并以FTP或SFTP的形式上传到指定的服务器中.使用该功能前,管理员需要在FusionInsig ...
- netty 游戏服务器 项目,netty游戏服务器源码
netty游戏服务器源码 内容精选 换一换 简要介绍KBEngine是一款开源的游戏服务端引擎,使用简单的约定协议就能够使客户端与服务端进行交互, 使用KBEngine插件能够快速与(Unity3D. ...
- 游戏服务器排队系统,游戏服务器排队功能
游戏服务器排队功能 内容精选 换一换 座席已签入座席登录后,获取当前座席已签入技能队列上的排队人数.设置成"GET".该接口仅支持GET方法,不支持PUT.POST和DELETE等 ...
- java 分布式游戏服务器框架,集群游戏服务器框架,游戏服务器网关框架 ioGame 网络游戏服务器框架
网络游戏框架简介 ioGame 是一个由 java 语言编写的网络游戏服务器框架.支持 websocket.tcp ,适用于全球同服.回合制游戏.策略游戏.即时战斗等游戏服务器的开发.具有高性能.稳定 ...
- 游戏服务器异常修复,游戏服务器异常修复
游戏服务器异常修复 内容精选 换一换 您可以通过"应用管理"页面的应用列表,快速查看应用状态,及相关异常信息,如图1所示.包括:应用状态:即图1中的①应用异常信息:即图1中的②云服 ...
- 游戏服务器是什么 游戏服务器的特点 游戏服务器选择配置
游戏服务器是什么意思? 字面意义上,游戏服务器就是一个硬件概念,常见的游戏服务器的类型有:机架式服务器.刀片机.小型机等等,选择不同类型不同配置的游戏服务器,所运行的程序也不太一样. 游戏服务器需要具 ...
- php游戏服务器教程,C++游戏服务器编程从入门到掌握视频教程(全)
任务1: 课程预览PPT 2-课程概述.mp4 3-IP详解第一部分.mp4 任务4: 预览IP详解PPT 5-IP详解第二部分.mp4 6-TCP详解第一部分(介绍 + 工作原理 + 头部详解).m ...
- 游戏服务器 协议安全,游戏服务器 协议安全
游戏服务器 协议安全 内容精选 换一换 游戏云端部署解决方案 来自:解决方案 场景举例在同一个VPC内,用户需要将某个安全组内一台裸金属服务器上的资源拷贝到另一个安全组内的裸金属服务器上时,可以将两台 ...
- 游戏服务器 协议 安全问题,游戏服务器开发安全问题
游戏服务器开发安全问题 内容精选 换一换 如果您需要使用毕昇JDK,则需要先在服务端安装毕昇JDK.毕昇JDK基于OpenJDK开发,是一个高性能.可用于生产环境的OpenJDK发行版,它积累了大量使 ...
- 游戏服务器 linux windows,游戏服务器用windows还是linux的系统好?
游戏服务器的常见的操作系统有Linux和windows,但是一些新手用户在建站初期由于对这两种操作系统不是很懂,所以在选择挂机宝的操作系统的时候会有很多疑问,我的网站是选用linux挂机宝还是wind ...
最新文章
- php接受post值报错,php接收post参数时报错怎么办
- php +号在传输参数的过程中被变为空格了_编程难学?web相关知识,跟着淼哥学php全栈之路6...
- String是一个奇怪的引用类型
- 转:字符编码笔记:ASCII,Unicode 和 UTF-8
- 简单英文题 24 Divisor and Multiple(python)
- 仿 vue-cli 搭建属于自己的脚手架
- 46.Linux/Unix 系统编程手册(下) -- System V 消息队列
- 常见前端面试题及答案(下)
- python类方法和静态方法_Python 中的方法、静态方法(static method)和类方法(class method)...
- 输入的字与系统编码不符_伺服系统故障排除法
- pr下载与安装(含安装包百度网盘链接)
- 用命令将FAT32格式磁盘转换为NTFS格式
- 解决刷新页面Vuex数据丢失问题
- 【Unity2D入门教程】简单制作战机弹幕射击游戏⑤C#编写 背景滚动移动以及增加粒子特效
- idea创建三种应用程序的方法:springboot,控制台程序,windows服务程序
- opencv中的split函数
- 【MacOS】虚拟机Vmware安装MacOS
- Redis基础 -- 地理坐标类型 Redis GEO 和 Redis GEO的常用命令(含GEOHASH编码说明)
- 小鸟伏特加怎么用计算机,小鸟伏特加什么意思
- 你不会还在机械重复的输入格式化信息吧?snippet配置来帮你一键生成