在开发应用时,经常要获取网络的所有网卡的IP地址,这样可以选择绑定哪个网卡。

代码如下:

获取所有有效的网卡:

import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.NetworkInterface;public static String[] getAllNetInterface() {ArrayList<String> availableInterface = new ArrayList<>();String [] interfaces = null;try {Enumeration nis = NetworkInterface.getNetworkInterfaces();InetAddress ia = null;while (nis.hasMoreElements()) {NetworkInterface ni = (NetworkInterface) nis.nextElement();Enumeration<InetAddress> ias = ni.getInetAddresses();while (ias.hasMoreElements()) {ia = ias.nextElement();if (ia instanceof Inet6Address) {continue;// skip ipv6}String ip = ia.getHostAddress();Log.d(TAG,"getAllNetInterface,available interface:"+ni.getName()+",address:"+ip);// 过滤掉127段的ip地址if (!"127.0.0.1".equals(ip)) {availableInterface.add(ni.getName());}}}} catch (SocketException e) {e.printStackTrace();}Log.d(TAG,"all interface:"+availableInterface.toString());int size = availableInterface.size();if (size > 0) {interfaces = new String[size];for(int i = 0; i < size; i++) {interfaces[i] = availableInterface.get(i);}}return interfaces;}

获取指定网卡的IP地址:

/*** Get Ip address 自动获取IP地址** @throws SocketException*/public static String getIpAddress(String netInterface) throws SocketException {String hostIp = null;try {Enumeration nis = NetworkInterface.getNetworkInterfaces();InetAddress ia = null;while (nis.hasMoreElements()) {NetworkInterface ni = (NetworkInterface) nis.nextElement();//Log.d(TAG,"getIpAddress,interface:"+ni.getName());if (ni.getName().equals(netInterface)) {Enumeration<InetAddress> ias = ni.getInetAddresses();while (ias.hasMoreElements()) {ia = ias.nextElement();if (ia instanceof Inet6Address) {continue;// skip ipv6}String ip = ia.getHostAddress();// 过滤掉127段的ip地址if (!"127.0.0.1".equals(ip)) {hostIp = ia.getHostAddress();break;}}}}} catch (SocketException e) {e.printStackTrace();}Log.d(TAG,"getIpAddress,interface:"+netInterface+",ip:"+hostIp);return hostIp;}

android 中获取所有有效网卡和对应的IP地址相关推荐

  1. linux给网卡添加一个ip地址,linux网络配置中如何给一块网卡添加多个IP地址

    汤向峰每日一题-2017年3月16日: linux网络配置中如何给一块网卡添加多个IP地址 linux系统给网卡配置VIP的方法常见有两种:别名IP.以及辅助IP ================== ...

  2. c#获取本地ip地址网关子网掩码_C#--WinForm获取本机网卡的型号,IP地址,子网掩码和网关-阿里云开发者社区...

    //方法一:利用注册表 using System; using Microsoft.Win32; class CardGrab { public static void Main() { Regist ...

  3. Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用

    关于PackageManager和ActivityManager的使用 ,自己也写了一些DEMO 了,基本上写的线路参考了Settings模块下的 应用程序,大家如果真正的有所兴趣,建议大家看看源码, ...

  4. Android中获取网络图片的三种方法

    android中获取网络图片是一件耗时的操作,如果直接获取有可能会出现应用程序无响应(ANR:Application Not Responding)对话框的情况.对于这种情况,一般的方法就是耗时操作用 ...

  5. android中获取时间

    android中获取时间 1)通过calendar类获取 Calendar calendar = Calendar.getInstance(); int moth = calendar.get(Cal ...

  6. 显示android 运行时异常,在android中获取运行时异常

    我做了一个简单的android应用程序,从一个活动移动到另一个活动,长度为5个编辑文本输入.但我得到了例外.我附加了两个java文件(MainActicity和Another),mainfest文件和 ...

  7. android中获取应用程序(包)的信息,Android中获取应用程序(包)的信息PackageManager的使用(一).doc...

    Android中获取应用程序(包)的信息PackageManager的使用(一) 本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等 ...

  8. android获取运行应用程序,Android中获取正在运行的应用程序

    Android中获取正在运行的应用程序 ActivityMain.java 1.public class ActivityMain extends ListActivity { 2. @Overrid ...

  9. Android中获取屏幕信息的几种方式

    Android中获取屏幕信息的几种方式 方案一 方案二 方案三 Note:以下方案中的this均指Activity. 方案一 WindowManager wm = (WindowManager) th ...

最新文章

  1. android开发基础_列表视图一(List View)
  2. sql array 数组基本用法(二)
  3. C++ new一个数组方法和初始化的方法
  4. Oracle查看正在执行的存储过程的sid
  5. 中山大学校队选拔赛第二试题试题3【Compressed suffix array】-------2015年2月8日
  6. html输入支付密码样式,基于JS实现类似支付宝支付密码输入框
  7. xbox360无线手柄接收器驱动_八位堂USB 无线接收器让手柄不闲置,无线畅玩各平台游戏...
  8. 献给汇编初学者-函数调用堆栈变化分析
  9. bootstrapV4.6.0 图片宫格布局(案例篇)
  10. 神经网络初始化trick:大神何凯明教你如何训练网络!
  11. numpy元素特定条件查找过滤
  12. 易学性vs易用性,产品应该选哪边?
  13. ACL访问控制 getfacl 、setfacl 命令
  14. ionic start myApp 报错
  15. 力扣刷题day42|121买卖股票的最佳时机、122买卖股票的最佳时机II
  16. 2022.6.20-6.26 AI行业周刊(第103期):新的小生命
  17. java心电图_使用原生js+canvas实现模拟心电图
  18. buu-crypto-yxx-异性相吸
  19. 使用L2TP方式连接出现809错误
  20. 成都拓嘉辰丰电商:拼多多侵权盗图如何举报

热门文章

  1. 详解Windows PE(Windows预安装环境)
  2. WIndows内核学习笔记:分页机制——PAE分页模式
  3. Failover feature ‘ANSYS electronics_desktop‘ is not available. No valid FLEXlm servers specified.解决方
  4. 【android 应用】Android(安卓)APP(应用)如何推广?整理
  5. 获取键盘按下的键位对应ask码
  6. 拼多多校招算法题迷宫寻路
  7. Python使用pm4py库读取xes文件
  8. 联想计算机怎么添加打印机,电脑和联想打印机连接不上怎么办啊
  9. SQL注入题型(手工注入+sqlmap)
  10. html点击超链接启动邮件客户端创建电子邮件