Obtaining clients IP address in GWT and Google App Engine

google-app-engine, gwt, java

Solution

OK - got it. In your Servlet which should extend `RemoteServiceServlet` do this:

final String ip = getThreadLocalRequest().getRemoteAddr();

Problem

I have a need to capture IP address of the client in my GWT/GAE (Java) application. Since GAE does not support full set of java.net APIs I cannot do code such as snippet below. Can anyone suggest reliable way of achieving the same? ``` 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(); } } } ``` For Python version one can do: ``` os.environ['REMOTE_ADDR'] ``` or ``` String ip = self.request.remote_addr; ``` But what would be a Java equivalent?

Original source