我需要在GWT / GAE(
Java)应用程序中捕获客户端的IP地址.由于GAE不支持全套java.net API,因此我无法执行下面的代码段代码.任何人都可以提出可靠的方法来达到同样的目
for (final Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { final NetworkInterface intf = en.nextElement(); for (final Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) { final InetAddress ip = enumIpAddr.nextElement(); if (!ip.isLoopbackAddress() && !ip.isLinkLocalAddress() && !ip.isAnyLocalAddress()) { return ip.getHostAddress().toString(); } } }
对于Python版本,我们可以:
os.environ['REMOTE_ADDR']
要么
String ip = self.request.remote_addr;
但是什么是Java等价物?
解决方法
好的,我知道了.在应该扩展RemoteServiceServlet的Servlet中执行以下操作:
final String ip = getThreadLocalRequest().getRemoteAddr();