当前位置: 首页 > 知识库问答 >
问题:

如果端口已经被使用,Netty不会抱怨

锺离穆冉
2023-03-14

以下问题:如果已经使用了端口,我预计会出现异常。

所以我试着在一个线程中启动我的服务器两次

    public void start() {
    new Thread(new Runnable() {
        @Override
        public void run() {
            EventLoopGroup bossGroup = new EpollEventLoopGroup();
            EventLoopGroup workerGroup = new EpollEventLoopGroup();

            ServerBootstrap serverBootstrap = new ServerBootstrap();
            serverBootstrap.group(bossGroup, workerGroup)
                    .channel(NioServerSocketChannel.class)
                    .childHandler(new ChannelInitializer<SocketChannel>() {
                        @Override
                        protected void initChannel(final SocketChannel socketChannel) throws Exception {
                            socketChannel.pipeline().addLast("decoder", new Decoder(Server.this));
                            socketChannel.pipeline().addLast("encoder", new Encoder(Server.this));
                        }
                    });

            serverBootstrap.bind(port).channel().closeFuture().syncUninterruptibly();
        }
    }).start();
}

但没有例外。我还尝试添加一个通道处理程序并在那里捕获异常,没有运气:/

用bind(port)包围行以捕获异常也没有效果。但我注意到,当我向ChannelFuture添加一个ChannelListener时,其中一个启动的实例从未达到这一点。

有人有主意吗?

共有1个答案

范哲
2023-03-14

绑定后,您将直接从未来获取通道,但此时可能尚未完成。尝试使用绑定(port.sync()等待绑定完成。

请参阅以获取参考https://www.baeldung.com/netty#6-服务器引导和https://netty.io/4.1/api/io/netty/channel/ChannelFuture.html

 类似资料:
  • 我有一个通过ConfigurationProperties配置的bean: 我通过但在“两级”中。在默认应用程序中。yml我只是将值设置为另一个属性的值: 在配置文件特定的YML文件中,我有: 我的期望是,如果我忘记指定属性,那么应用程序将在启动时失败,并显示占位符theValueOf.myBean.name无法解析的消息。相反,字段被分配了值(字面意思)。 如果我用注释字段(并且不要使用Conf

  • 我有一个子组件,它有几个带有以下CSS属性的选项卡: 当我点击后退按钮时,它会返回到上一个选择的选项卡,这很好,但是焦点不会从当前的选项卡中移除,除非我点击屏幕的任何其他部分。 如何去除焦点?

  • 我想netty是我所知道的最好的java网络框架,在阅读并尝试一些示例后,我有疑问: 1.使用netty 4.0为具有不同协议的多端口创建网络服务器的最佳方法是什么? 每个服务器创建: EventLoopGroup bossGroup=new NioEventLoopGroup();//(1) EventLoopGroup workerGroup=新的NioEventLoopGroup(); Se

  • Spring靴:1.4.0.M1 我有一个IIS在端口80上运行,但是我已经通过STS配置属性将Sever.port更改为8090。STS屏幕快照 为什么STS embedded tomcat在更改后仍使用端口80?有点迷惑。

  • 我将创建一个身份验证服务器,它本身与一组不同的Oauth2.0服务器交互。Netty似乎是在这里实现网络部分的一个很好的候选者。但在开始之前,我需要澄清一些关于netty的细节,因为我是新手。例行程序如下: > < li> 服务器接受来自客户端的HTTPS连接。 然后,不关闭第一个连接,它通过HTTPS与远程OAuth2.0服务器建立另一个连接并获取数据 毕竟,服务器将结果发送回客户端,客户端应该

  • 我一直在使用一个节点。js项目进行了几个星期,它一直工作得很好。通常,我使用运行我的应用程序,并在本地主机端口3000上的浏览器中查看它。 今天,在使用npm start时,我开始出现以下错误: 我已经检查了资源监视器,没有其他进程在端口3000上运行。为什么我会收到这个错误消息? 在我的应用程序中。js我有以下代码来设置端口。。。这是不对的吗?它以前工作得很好,所以我不确定我做错了什么。 谢谢你