2013-02-09 171 views
0

我的用户向我报告这个错误,我想默默地忽略它,因为它是我的应用程序中非关键部分。Netty - 忽略IP_TOS失败的设置

2013年2月9日15点20分15秒[警告]无法设置一个通道选项:[ID:0x8cf59443,/84.100.204.150:51292 => /87.98.181.225:22091] io.netty .channel.ChannelException:java.net.SocketException:无效参数:无更多信息 at io.netty.channel.socket.DefaultSocketChannelConfig.setTrafficClass(DefaultSocketChannelConfig.java:264) at io.netty.channel.socket.DefaultSocketChannelConfig.setOption (DefaultSocketChannelConfig.java:115) at io.netty.bootstrap.ServerBootstrap $ ServerBootstrapAcceptor.inboundBufferUpdated(ServerBootstrap.java:264) at io.netty.channel.DefaultChannelHandlerContext.invokeInboundBufferUpdated(DefaultChannelHandlerContext.java:11 70) 在io.netty.channel.DefaultChannelHandlerContext.fireInboundBufferUpdated0(DefaultChannelHandlerContext.java:1148) 在io.netty.channel.DefaultChannelHandlerContext.fireInboundBufferUpdated(DefaultChannelHandlerContext.java:1127) 在io.netty.channel.DefaultChannelPipeline.fireInboundBufferUpdated( DefaultChannelPipeline.java:903) 在io.netty.channel.socket.nio.AbstractNioMessageChannel $ NioMessageUnsafe.read(AbstractNioMessageChannel.java:84) 在io.netty.channel.socket.nio.NioEventLoop.processSelectedKey(NioEventLoop.java: 397) at io.netty.channel.socket.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:361) at io.netty.channel.socket.nio.NioEventLoop.run(NioEventLoop.java:301) at io。 netty.channel.SingleThreadEventExecuto r。2.run(SingleThreadEventExecutor.java:110) at java.lang.Thread.run(未知来源) 引起:java.net.SocketException:无效参数:无更多信息 at sun.nio.ch.Net。 setIntOption0(Native Method) at sun.nio.ch.Net.setSocketOption(Unknown Source) at sun.nio.ch.SocketChannelImpl.setOption(Unknown Source) at sun.nio.ch.SocketAdaptor.setIntOption(Unknown Source) 在sun.nio.ch.SocketAdaptor.setTrafficClass(来源不明) 在io.netty.channel.socket.DefaultSocketChannelConfig.setTrafficClass(DefaultSocketChannelConfig.java:262) ...... 12多个

要做到这一点,我只是设置在IP_TOS选项我ServerBootstrapchildOption(ChannelOption.IP_TOS, 0x18)

如果你知道我在哪里就需要下一个处理程序,或选择忽略失败设置该选项,请让我知道。

md_5

回答

3

下面是一个例子引导代码,设置选项:

 Bootstrap b = new Bootstrap(); 
     b.group(new NioEventLoopGroup(), new NioEventLoopGroup()) 
     .channel(NioServerSocketChannel.class) 
     .option(ChannelOption.SO_BACKLOG, 100) 
     .handler(new LoggingHandler(LogLevel.INFO)) 
     .childHandler(new ChannelInitializer<SocketChannel>() { 
      @Override 
      public void initChannel(SocketChannel ch) throws Exception { 
       try { 
        ch.config().setTrafficClass(0x18); 
       } catch (ChannelException e) { 
        // Ignore 
       } 
       ch.pipeline().addLast(
         new LoggingHandler(LogLevel.INFO), 
         new EchoServerHandler()); 
      } 
     });