0

我正在使用实现Netty的LittleProxy。我正在尝试返回 HTTP 请求源的 IP 地址和端口。我使用 getRemoteAddress 方法,但返回的端口总是不同的。似乎每次请求后都会累加?我一定在这里错过了一些见解。

经过一番搜索,我尝试将其向下转换为 InetSocketAddress。但结果是一样的:

private void processRequest(final ChannelHandlerContext ctx, 
        final MessageEvent me) {

        final HttpRequest request = (HttpRequest) me.getMessage();
        //THOMAS EDIT FOR OUTPUT REMOTE ID AND PORT
        InetSocketAddress inetAddr = (InetSocketAddress)me.getRemoteAddress();        
        System.out.println("Source IP: " + inetAddr.getAddress());
        System.out.println("Source Port: " + inetAddr.getPort());
4

1 回答 1

2

Netty 的行为类似于网关或 NAT。它提供的 IpAddress 和 Ports 是它自己的端口号。

您可以尝试的是获取 HTTPHeaderX-Forwarded-For

选项 2:

使用 ChannelHandlerContext 而不是 MessageEvent

ctx.getChannel().getRemoteAddress();

于 2013-02-26T11:49:20.183 回答