在我的类中(继承自SimpleChannelHandler),我试图获取消息最初发送的IP地址。
@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent ev) throws Exception {
String host = ((InetSocketAddress)ctx.getChannel().getRemoteAddress()).getAddress().getHostAddress();
int port = ((InetSocketAddress)ctx.getChannel().getRemoteAddress()).getPort();
LOG.debug(String.format("host:%s port:%d", host, port));
..
这会输出IP 10.0.0.1(网关),而不是正确的客户端地址(10.52.45.4)。
有没有办法获取我正在尝试的IP地址,或者网络配置可能出了什么问题?
((InetSocketAddress)ctx.channel().remoteAddress()).getAddress().getHostAddress();
可以获取远程地址的IP地址。 - Aaron