在平時,如果想獲取本機的公網IP,我們都知道去百度查詢一下,它就會出來。
但是在代碼中,如果獲取到本機的公網IP呢?
其實方法千千萬,我在這里介紹一種比較簡單、不需要其它依賴的方法,代碼如下
public static String getV4IP() {
String ip = "";
String chinaz = "ht" + "tp" + ":/" + "/i" + "p.ch" + "in" + "az." + "co" + "m";
StringBuilder inputLine = new StringBuilder();
String read = "";
URL url = null;
HttpURLConnection urlConnection = null;
BufferedReader in = null;
try {
url = new URL(chinaz);
urlConnection = (HttpURLConnection) url.openConnection();
in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "UTF-8"));
while ((read = in.readLine()) != null) {
inputLine.append(read + "\r\n");
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Pattern p = Pattern.compile("\\<dd class\\="\"fz24\"">(.*?)\\<\\/dd>");
Matcher m = p.matcher(inputLine.toString());
if (m.find()) {
String ipstr = m.group(1);
ip = ipstr;
}
return ip;
}
調用該方法,返回字符串:
該方法粘貼過去直接用,返回的就是本機公網IP
其原理很簡單,向chinaz網站發送請求,chinaz網站會把請求的公網IP返回過來,然后我們經過一些簡單的處理,就可以得到公網IP了。