Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Netty SocketException:参数无效_Netty - Fatal编程技术网

Netty SocketException:参数无效

Netty SocketException:参数无效,netty,Netty,我已经基于netty 4.0.32.Final编写了传输服务器 在极少数情况下,我会在Oracle Solaris 11.1 SPARC上遇到下一个错误: Failed to set a channel option: [id: 0x970c09c4, /91.221.145.225:48986 => /0.0.0.0:0] io.netty.channel.ChannelException: java.net.SocketException: Invalid argument at io

我已经基于netty 4.0.32.Final编写了传输服务器

在极少数情况下,我会在Oracle Solaris 11.1 SPARC上遇到下一个错误:

Failed to set a channel option: [id: 0x970c09c4, /91.221.145.225:48986 => /0.0.0.0:0]
io.netty.channel.ChannelException: java.net.SocketException: Invalid argument
at io.netty.channel.socket.DefaultSocketChannelConfig.setReuseAddress(DefaultSocketChannelConfig.java:222)
at io.netty.channel.socket.DefaultSocketChannelConfig.setOption(DefaultSocketChannelConfig.java:113)
at io.netty.bootstrap.ServerBootstrap$ServerBootstrapAcceptor.channelRead(ServerBootstrap.java:239)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:846)
at io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.read(AbstractNioMessageChannel.java:93)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354)
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.SocketException: Invalid argument
at sun.nio.ch.Net.setIntOption0(Native Method)
at sun.nio.ch.Net.setSocketOption(Net.java:356)
at sun.nio.ch.SocketChannelImpl.setOption(SocketChannelImpl.java:190)
at sun.nio.ch.SocketAdaptor.setBooleanOption(SocketAdaptor.java:271)
at sun.nio.ch.SocketAdaptor.setReuseAddress(SocketAdaptor.java:389)
at io.netty.channel.socket.DefaultSocketChannelConfig.setReuseAddress(DefaultSocketChannelConfig.java:220)
... 12 more
以下是选项[SO_REUSEADDR=true,TCP_NODELAY=true,SO_LINGER=-1,WRITE_BUFFER_LOW_WATER_MARK=10240,WRITE_BUFFER_HIGH_WATER_MARK=20480,MESSAGE_SIZE_ESTIMATOR=io.netty.channel。DefaultMessageSizeEstimator@350c136d]

我已经调查了sun.nio.ch.Net.setIntOption0(本机方法)的本机调用最终将导致setsockopt调用

在这里列出的文档中 其中写道:

埃因瓦尔 指定的选项在指定的套接字级别无效,或者套接字已关闭

因此,可能会引发“无效参数”错误,因为在我的应用程序尝试设置套接字选项时,套接字已关闭

我的调查正确吗? 如果是的话,是否有可能在网络代码中检测到这种情况,以防止这种错误,而不是调用选项集