0
동일한 포트에서 다중 소켓 연결을 허용하는 Netty를 사용하여 서버 어플리케이션을 작성해야합니다. 즉, 여러 개의 ServerBootStrap 객체를 동일한 포트에 바인딩 할 수 있어야합니다. Netty를 사용하면 가능합니까? 내 코드는 다음과 같습니다 : 사용Netty를 사용하여 두 핸들러를 동일한 포트에 바인드 할 수 있습니까?
동일한 포트에서 다중 소켓 연결을 허용하는 Netty를 사용하여 서버 어플리케이션을 작성해야합니다. 즉, 여러 개의 ServerBootStrap 객체를 동일한 포트에 바인딩 할 수 있어야합니다. Netty를 사용하면 가능합니까? 내 코드는 다음과 같습니다 : 사용Netty를 사용하여 두 핸들러를 동일한 포트에 바인드 할 수 있습니까?
그것은 가능하다 이미 주소를, 그러나 당신의 기본 OS에 따라 달라집니다
@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 {
...
}
}
나는 예외를 얻고있다. 귀하의 질문에 대답하려면 실제로 옵션 SO_REUSEADDR가 무엇을 이해할 필요하고 누군가가 이미 여기 설명하는 훌륭한 일을했다 :, 이럴 수는 없습니다
아니오. 어쨌든 왜 그걸 원하니? 당신의 봉사 목적은 무엇입니까? –
동의합니다. 그리고 나는 이것이 "네티"문제가 아니라고 생각합니다. –
동일한 포트에 두 번 이상 바인드 할 수 없습니다. [포트 통합 예제] (https://github.com/netty/netty/tree/4.0/example/src/main/java/io/netty/example/portunification)가 도움이 될 것입니다. –