Есть ли способ получить информацию о порте в Netty - PullRequest
0 голосов
/ 02 ноября 2018

Мне не удалось найти ответ в сети.

Кто-нибудь знает, как получить динамически назначенную информацию о порте в netty сервере?

Сервер загружается таким образом:

override fun startSocket() {
    try {
        val serverBootstrap = ServerBootstrap()
        serverBootstrap.group(group)
        serverBootstrap.channel(NioServerSocketChannel::class.java)
        if(peerInfo is DynamicPortPeerInfo) {
            serverBootstrap.localAddress(InetSocketAddress(peerInfo.host, 0))
        } else {
            serverBootstrap.localAddress(InetSocketAddress(peerInfo.host, peerInfo.port))
        }
        serverBootstrap.childHandler(object : ChannelInitializer<SocketChannel>() {
            override fun initChannel(socketChannel: SocketChannel) {
                socketChannel.pipeline()
                        .addLast(NettyIO.framePrepender)
                        .addLast(LengthFieldBasedFrameDecoder(MAX_PAYLOAD_SIZE, 0, packetSizeLength, 0, packetSizeLength))
                        .addLast(ServerHandler())
            }
        })
        val channelFuture = serverBootstrap.bind().sync()
        channelFuture.channel().closeFuture().sync()
    } catch (e: Exception) {
        logger.error(e.toString())
    }
}

1 Ответ

0 голосов
/ 02 ноября 2018

Вы можете получить это, обратившись к ChannelFuture, который возвращается bind().

Что-то вроде:

ChannelFuture channelFuture = serverBootstrap.bind().sync()
InetSocketAddress localAddress = (InetSocketAddress) channelFuture.channel().localAddress();
int port = localAddress.getPort();
...