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 は、独自のポート番号です。

あなたが試すことができるのは、HTTPHeader を取得することですX-Forwarded-For

オプション 2:

MessageEvent の代わりに ChannelHandlerContext を使用する

ctx.getChannel().getRemoteAddress();

于 2013-02-26T11:49:20.183 に答える