关于netty封装包头

_下划线开头 2018-01-19 09:50:19
网络数据包头结构:
#define FLAG 0x55AA55AA //网络数据包头标志
#define DWORD unsigned int

typedef struct _TAG_DetectNetHead_T
{
DWORD nFlag ; //网络数据包标志(0x55AA55AA)
DWORD nDataLen; //数据长度,不包括包头自身的长度
DWORD nCommType; //类型0:重点人员查询请求;1:心跳;2:身份信息
} TAG_DetectNetHead_T;



在java项目中用netty如何封装这个包头呢,又如何解呢?得用二进制吗?具体怎么写呢?

...全文
377 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
球肉肉 2018-01-30
  • 打赏
  • 举报
回复
int nFlag = 0x55AA55AA; //int nDataLen = 消息体字节长度 int nCommType = 0;//类型0:重点人员查询请求;1:心跳; 这三个字段就是消息头,推送给对端后,对端拿到截取了12个字节,作为消息头截取信息(int占四字节); 其中nDataLen定了消息体的长度,对端就知道消息体长度,再按这个长度截取对应的字节数,这个消息体怎么约束的,再去看协议; 具体怎么发送的,我大概写下: ByteBuf encoded = ctx.alloc().buffer(12 + Data.length);//data是消息体长度 byte[] nFlag_b = new byte[4]; //把int转换成字节数组放到nFlag_b里,然后放到ByteBuf ,每个类型的都转换成对应的字节数组,自己转,也可以封装成类,比较规范。 encoded.writeBytes(nFlag); //.............全部组装好发送给对端,我这里写的是服务端代码,客户端大同小异。 ctx.writeAndFlush(encoded);

1,738

社区成员

发帖
与我相关
我的任务
社区描述
网络协议与配置相关内容讨论专区
网络协议网络安全tcp/ip 技术论坛(原bbs)
社区管理员
  • 网络协议与配置社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧