我正在使用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());
答案 0 :(得分:2)
Netty的行为类似于网关或NAT。它给出的IpAddress和Ports是它自己的端口号。
您可以尝试获取HTTPHeader X-Forwarded-For
选项2:
使用ChannelHandlerContext而不是MessageEvent
ctx.getChannel().getRemoteAddress();