java – Netty增加ChannelBuffer大小
您好我有一个Netty Server,其处理程序应该接受字符串.它似乎只接收最多1024个字节的内容.如何增加缓冲区大小.我已经尝试过了
bootstrap.setOption("child.sendBufferSize",1048576); bootstrap.setOption("child.receiveBufferSize",1048576); 没有成功. 处理程序如下 public class TestHandler extends SimpleChannelHandler { @Override public void messageReceived(ChannelHandlerContext ctx,MessageEvent e) { ChannelBuffer buf = (ChannelBuffer) e.getMessage(); String response = ""; if (buf.readable()) { response = buf.toString(CharsetUtil.UTF_8); System.out.println("CONTENT: " + response); } System.out.println(response); } @Override public void exceptionCaught(ChannelHandlerContext ctx,ExceptionEvent e) { e.getCause().printStackTrace(); Channel ch = e.getChannel(); ch.close(); } } 解决方法
你在使用UDP吗?如果是这样,数据包将以1024字节最大.此代码注释位于QOTM代码示例中:
如果您使用TCP,则应在处理之前将管道解码器和字符串解码器添加到管道中;像这样的东西: pipeline.addLast("frameDecoder",new DelimiterBasedFrameDecoder(80960,Delimiters.lineDelimiter())); pipeline.addLast("stringDecoder",new StringDecoder(CharsetUtil.UTF_8)); pipeline.addLast("myHandler",new TestHandler()); 请注意,您需要修改测试处理程序,因为MessageEvent实际上将包含您的字符串. @Override public void messageReceived(ChannelHandlerContext ctx,MessageEvent e) { String response = (String) e.getMessage(); System.out.println(response); } 合理 ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |