Java code to find public IP address :
URL url= new URL("http://gt-tests.appspot.com/ip");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String ip = in.readLine();
System.out.println("IP : "+ip);
I created a simple servlet app on google app engine and posted at http://gt-tests.appspot.com/ip .
The servlet code returns the public address of client, it looks like :
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
PrintWriter out = resp.getWriter();
// Get client's IP address
String addr = req.getRemoteAddr();
out.println(addr);
...