0

我需要知道服务器端的远程地址。我尝试了以下方法但失败了:

  1. QuicStreamChannel.remoteAddress()返回QuicStreamAddress,不能转换为InetSocketAddressQuicStreamAddressQuicConnectionAddress根本不包含远程 IP 地址或端口。
  2. io.netty.buffer.PooledUnsafeDirectByteBuf不能转换为类io.netty.channel.socket.DatagramPacket,所以我不能DatagramPacket.sender()用来获取发件人地址。
  3. (QuicChannel) (ctx.channel().parent())).sslEngine().getPeerHost()-- 这将返回 null。
4

1 回答 1

1

你想拦截QuicConnectionEvents。这些事件包含地址。请注意,地址可能会更改(在这种情况下会触发一个新事件)。

new ChannelInboundHandlerAdapter() {

    @Override
    public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
        if (evt instanceof QuicConnectionEvent) {
            QuicConnectionEvent event = (QuicConnectionEvent) evt;
            System.out.println(event.newAddress());
        }
    }
};
于 2022-02-02T14:45:18.517 回答