采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
循环发送信息的时候,为什么会出现一部分对一部分异常的情况诶?是因为网络传输丢包的问题还是其他什么问题诶?
贴一下错误的代码和报错。是客户端报错还是服务端?
public class MyDecodecer extends ByteToMessageDecoder { //数据长度 + 数据 @Override protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception { //小于四个字节表示数据不够(不够一个int的长度--数据长度值) if(in.readableBytes() < 4){ return; } //假设数据长度10000, 则4 + 10000才能表示我们的数据,但是有可能因为网络问题上面的只接受到4+9999的数据,这就是脏数据 int i = in.readInt(); // 如果实际的可读数据小于指定的数据长度表示传输有问题直接返回 if(in.readableBytes() < i){ in.resetReaderIndex(); return; } byte[] data = new byte[i];//10000 in.readBytes(data); System.out.println(new String(data)); in.markReaderIndex();//10004 } }
就是这里的 if(in.readableBytes() < i){ in.resetReaderIndex(); return; }
报错信息呢
登录后可查看更多问答,登录/注册
云通信 / 游戏 / 社交等热门赛道中的必会项目
371 12
498 11
453 11
427 9
502 8