1、获取公网ip的网址:http://2021.ip138.com/ic.asp
2、利用该网址获取公网ip:
public static final String IP_PATTERN= "\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}";
/**
* 获取外网的IP(必须放到子线程里处理)
*/
public static String getNetIp() {
InputStream inStream ;
try {
URL infoUrl = new URL("http://2021.ip138.com");
URLConnection connection = infoUrl.openConnection();
HttpURLConnection httpConnection = (HttpURLConnection) connection;
httpConnection.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36");
httpConnection.connect();
int responseCode = httpConnection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
inStream = httpConnection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inStream, "gb2312"));
StringBuilder builder = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
inStream.close();
String resp = builder.toString();
Pattern p = Pattern.compile(IP_PATTERN);
Matcher m = p.matcher(resp);
if (m.find()){
return m.group(0);
}
return "";
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}