Android获取外网和内网的IP
16lz
2021-01-24
很晚了,直接上代码:
/** * 获取外网的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-8"));StringBuilder strber = new StringBuilder();String line = null;while ((line = reader.readLine()) != null)strber.append(line + "\n");Pattern pattern = Pattern.compile("((?:(?:25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))\\.){3}(?:25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\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 blocke.printStackTrace();}return "0";}
技术交流QQ群:6399844
更多相关文章
- Android真机调试不打印日志解决
- 演化理解 Android(安卓)异步加载图片
- Android判断当前App是在前台还是在后台
- Android(安卓)http 请求——AsyncHttpClient集成【解决重定向问
- android Binder机制深入浅出
- Android(安卓)Input Framework(三)---InputReader&InputDispatch
- ThreadLocal原理
- Android(安卓)okhttp上传多张图片 与 后台接收图片并保存
- Android结合kotlin使用coroutine的方法实例