2013-02-26 1 views
0

Я использую LittleProxy, который реализует Netty. Я пытаюсь вернуть IP-адрес и порт источника HTTP-запроса. Я использую метод getRemoteAddress, но возвращаемый порт всегда отличается. Кажется, он складывается после каждого запроса? Мне, должно быть, здесь не хватает понимания.Netty - 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()); 
+0

Краткого порт всегда различны для каждого нового соединения TCP, но он никогда не меняется для конкретного сеанса. –

ответ

2

Netty ведет себя как шлюз или NAT. IpAddress и порты, которые он предоставляет, это его собственные номера портов.

, что вы можете попробовать, чтобы получить HTTPHeader X-Forwarded-For

Вариант 2:

использование ChannelHandlerContext вместо MessageEvent

ctx.getChannel().getRemoteAddress();

+0

Может ли это быть подделано? (Потому что это поле HTTP ...) Или вы можете быть уверены, потому что он был последний добавлен надежной библиотекой нетти? – Thomas

+0

У меня есть только «Via» в моем HTTP-запросе, и, похоже, он указывает на мою локальную (netty) машину. – Thomas

+0

Вы могли бы попробовать 'ctx.getChannel(). GetRemoteAddress();' – TheWhiteRabbit

 Смежные вопросы

  • Нет связанных вопросов^_^