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

我可以使用Netty将两个处理程序绑定到同一个端口吗

沈自珍
2023-03-14

我需要使用Netty创建一个服务器应用程序,它将允许在同一个端口上进行多个套接字连接。也就是说,我需要能够将多个ServerBootStrap对象绑定到同一个端口。这可能使用Netty吗?我的代码如下:

@Override
public void startServer() {
bossGroup = new NioEventLoopGroup(1);
workerGroup = new NioEventLoopGroup();
try {
    ServerBootstrap b = new ServerBootstrap();
    b.group(bossGroup, workerGroup)
        .channel(NioServerSocketChannel.class)
        .option(ChannelOption.SO_REUSEADDR,true)
        .option(ChannelOption.SO_BACKLOG, 1)
        .option(ChannelOption.SO_KEEPALIVE, true)
        .option(ChannelOption.AUTO_CLOSE, false)
        .option(ChannelOption.TCP_NODELAY, true)
        .handler(new LoggingHandler(LogLevel.INFO))
        .childHandler(new ChannelInitializer<SocketChannel>() {
        @Override
        public void initChannel(SocketChannel ch)
            throws Exception {
            ChannelPipeline p = ch.pipeline();
            p.addLast(new TWebMessageDecoder(logger));
            p.addLast(new StringDecoder(CharsetUtil.UTF_8));
            p.addLast(serverHandler);
        }
        });

    ChannelFuture f = b.bind(Utils.getPort(getConntype(), config))
        .sync();
    f.channel().closeFuture().sync();
} catch (Exception e) {
...
} finally {
...
}
}

我得到一个例外:地址已经在使用中

共有1个答案

贝德辉
2023-03-14

这是可能的,但这取决于您的底层操作系统。要回答您的问题,您实际上需要了解SO_REUSEADDR选项的功能,并且有人已经在这里做了大量的解释:

Socket选项SO_REUSEADDR和SO_REUSEPORT有何不同?它们在所有主要的操作系统中都是相同的吗?

 类似资料:
  • 我有一个关于在Guice中绑定的问题。 Guice不会知道我想要IMYInterface的哪个实现。我是否可以在这个阶段指定注释来有选择地说:我想要MyClass2的实现? 多谢

  • 也许是基于代码创建的队列,它由其他现有队列支持?

  • 在openGL中,可以将一个纹理绑定到两个(或多个)不同的统一采样器吗?使用两种不同的纹理进行渲染时,如下所示: 着色器: 客户: 但当我尝试将一个纹理对象绑定到两个不同的纹理单元时,似乎第一个绑定的单元保持未绑定状态: 当然,可以为两个采样器设置相同的单位,但有时我还想为不同的纹理使用着色器,而不仅仅是为两个采样器设置相同的纹理对象。 这个解决方案实际上运行得很好,但它不符合我所描述的需求。也可

  • 问题内容: 据我所知,我可以使用Golang运行简单的Web服务器,只需使用软件包即可,例如 其中PORT是要侦听的TCP地址。 我可以将PORT用作PORT S ,例如从一个应用程序中使用吗? 我的问题可能很愚蠢,但是“谁不问,他就不会回答!” 感谢前进! 问题答案: 你不能。 但是,您可以在不同的端口上启动多个侦听器

  • 我有一个完全使用Android Studio开发的应用程序。我需要创建第二个应用程序,这个我想用phonegapp来完成。这两个应用程序相互关联...所以理想情况下,我想将它们合并到同一个应用程序中...合并并不意味着它们需要一起工作。我希望它们一起下载(作为同一个应用程序),并且能够在应用程序中从一个下载到另一个...所以它们可以完全是两个独立的应用程序,但用户会认为它只是一个应用程序。我希望我

  • 问题内容: 我正在使用Flamingo功能区和Substance Office 2007外观。 当然,现在 每个 控件都具有这种外观,即使对话框上也是如此。 我想要的是Office 2007中的功能,功能区具有Office 2007的外观,但其他控件保留其本机Vista / XP的外观。 是否可以为某些控件分配不同的外观?也许使用某种链接或代理外观? 问题答案: 我刚刚发现:由于物质5.0的SKI