问题描述
我在程序中遇到了Netty Pack问题。我的程序是这样的:
protected void encode(ChannelHandlerContext channelHandlerContext,OriginMessageEntity message,ByteBuf byteBuf){
try {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
if(message.getProtocolVersion()!=null)
outputStream.write(message.getProtocolVersion());
else outputStream.write(PrintConstants.PROTOCOL_HEADER_PROTOCOL_NUMBER);
if(message.getByteLength()!=null)
outputStream.write(message.getByteLength());
else outputStream.write(PrintConstants.MESSAGE_DEFAULT_BYTELENGTH);
if(message.getCmdType()!=null)
outputStream.write(message.getCmdType());
else outputStream.write(PrintConstants.MESSAGE_DEFAULT_CMDTYPE);
if (message.getData() != null) outputStream.write(message.getData());
byteBuf.writeBytes(outputStream.toByteArray());
} catch (Exception e) {
logger.error("error。",e);
}
}
我们使用以下协议制作协议:ProtocolVersion,数据长度,命令类型,数据。 数据长度字段记录数据字段的长度。 大多数情况下,程序运行良好。但有时,数据长度字段不等于数据字段的长度。例如:长度字段:400,实际数据长度:398。
出什么问题了? netty是否能够控制数据包,而不丢失数据或添加数据?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)