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);
}
合理 ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
