Netty - getRemoteAddress每次都返回不同的端口

时间:2013-02-26 11:42:43

标签: java port netty

我正在使用LittleProxy来实现Netty。 我试图返回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());

1 个答案:

答案 0 :(得分:2)

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

您可以尝试获取HTTPHeader X-Forwarded-For

选项2:

使用ChannelHandlerContext而不是MessageEvent

ctx.getChannel().getRemoteAddress();