来自频道的Netty remoteaddress为null
以下代码来自chandyboundhandleradapter
的扩展类别的一部分:
@Override
public void channelInactive(ChannelHandlerContext ctx) throws Exception {
System.out.println("channel inactive, reconnect to the server.");
long sleepTimeMs = 1000;
final EventLoop eventLoop = ctx.channel().eventLoop();
SocketAddress socketAddress1 = ctx.channel().remoteAddress();
eventLoop.schedule(() -> {
try {
System.out.println("Reconnecting ...");
tcpClient.connect(ctx.channel().remoteAddress());
} catch (Throwable e) {
e.printStackTrace();
}
}, sleepTimeMs, TimeUnit.MILLISECONDS);
ctx.fireChannelInactive();
}
没有
SocketAddress socketAddress1 = ctx.channel().remoteAddress();
以下行将抛出nullpoInterException
:
tcpClient.connect(ctx.channel().remoteAddress())
作为ctx.channel()。remoteadDress。 ()
param是null
(我在有没有和没有socketAddress1
分配的情况下多次对其进行了测试)。
有什么解释吗?
The following code is from a piece from a extended class of ChannelInboundHandlerAdapter
:
@Override
public void channelInactive(ChannelHandlerContext ctx) throws Exception {
System.out.println("channel inactive, reconnect to the server.");
long sleepTimeMs = 1000;
final EventLoop eventLoop = ctx.channel().eventLoop();
SocketAddress socketAddress1 = ctx.channel().remoteAddress();
eventLoop.schedule(() -> {
try {
System.out.println("Reconnecting ...");
tcpClient.connect(ctx.channel().remoteAddress());
} catch (Throwable e) {
e.printStackTrace();
}
}, sleepTimeMs, TimeUnit.MILLISECONDS);
ctx.fireChannelInactive();
}
Without having
SocketAddress socketAddress1 = ctx.channel().remoteAddress();
the following line would throw a NullPointerException
:
tcpClient.connect(ctx.channel().remoteAddress())
as the ctx.channel().remoteAddress()
param is null
(I tested it multiple times with and without socketAddress1
assignment).
Any explanation of this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论