Android获取外网和内网的IP
来源:程序员人生 发布时间:2015-05-15 08:08:23 阅读次数:3559次
很晚了,直接上代码:
/**
* 获得外网的IP(要访问Url,要放到后台线程里处理)
*
* @Title: GetNetIp
* @Description:
* @param @return
* @return String
* @throws
*/
public static String GetNetIp() {
URL infoUrl = null;
InputStream inStream = null;
String ipLine = "";
HttpURLConnection httpConnection = null;
try {
infoUrl = new URL("http://ip168.com/");
URLConnection connection = infoUrl.openConnection();
httpConnection = (HttpURLConnection) connection;
int responseCode = httpConnection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
inStream = httpConnection.getInputStream();
BufferedReader reader = new BufferedReader(
new InputStreamReader(inStream, "utf⑻"));
StringBuilder strber = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
strber.append(line + "
");
Pattern pattern = Pattern
.compile("((?:(?:25[0⑸]|2[0⑷]d|((1d{2})|([1⑼]?d))).){3}(?:25[0⑸]|2[0⑷]d|((1d{2})|([1⑼]?d))))");
Matcher matcher = pattern.matcher(strber.toString());
if (matcher.find()) {
ipLine = matcher.group();
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
inStream.close();
httpConnection.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
return ipLine;
}
/**
* 获得本地IP
*
* @return
*/
public static String getLocalIpAddress() {
try {
Enumeration<NetworkInterface> en = NetworkInterface
.getNetworkInterfaces();
while (en.hasMoreElements()) {
NetworkInterface ni = en.nextElement();
Enumeration<InetAddress> enIp = ni.getInetAddresses();
while (enIp.hasMoreElements()) {
InetAddress inet = enIp.nextElement();
if (!inet.isLoopbackAddress()
&& (inet instanceof Inet4Address)) {
return inet.getHostAddress().toString();
}
}
}
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "0";
}
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠