我需要使用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 {
...
}
}
我收到异常:地址已在使用中
答案 0 :(得分:0)
这可能是可能的,但这取决于您的底层操作系统。要回答你的问题,你实际上需要了解SO_REUSEADDR的选项,并且有人已经在这里做了很好的解释: