我正在尝试创建 Netty UDP 侦听器。我面临的问题是我无法像 tcp 一样停止 udp 服务器,udp 始终在运行,即使正常调用了关机,停止它的唯一方法是抛出异常。
private int port;
private UDPViewModel viewModel;
private DefaultEventLoopGroup defaultEventLoopGroup;
public UdpServer(UDPViewModel viewModel, int port) {
this.port = port;
this.viewModel = viewModel;
}
@Override
public void run() {
defaultEventLoopGroup = new DefaultEventLoopGroup();
try {
ServerBootstrap bootstrap = new ServerBootstrap()
.channel(UdpServerChannel.class)
.group(defaultEventLoopGroup)
.childHandler(new ChannelInitializer<Channel>() {
@Override
protected void initChannel(Channel channel) {
channel.pipeline()
.addLast(new ReadTimeoutHandler(5))
.addLast(new UdpServerHandler(viewModel));
}
});
bootstrap.bind(port).sync().channel().closeFuture().syncUninterruptibly().await();
System.out.println("UDP Server : [successfully started]");
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
defaultEventLoopGroup.shutdownGracefully();
}
}
有人对如何正确关闭 netty udp 服务器有任何想法吗?
米琪卡哇伊
森林海
相关分类