在Linux下用InetAddress.getLocalHost()方法获取本机IP地址,
得到的结果总是:127.0.1.1。
原来这个是etc/hosts文件中的配置,并非网卡的IP地址。

可用代码如下:

/**
* IP工具类
* @author lyh
* @version 2012-7-5
* @see IpGetter
* @since
*/
public class IpGetter
{
/**
* 日志
*/
private static final Logger log = Logger.getLogger(IpGetter.class);

/**
* 单网卡名称
*/
private static final String NETWORK_CARD = "eth0";

/**
* 绑定网卡名称
*/
private static final String NETWORK_CARD_BAND = "bond0";

/**
*
* Description: 得到本机名<br>
* @return
* @see
*/
public static String getLocalHostName()
{
try
{
InetAddress addr = InetAddress.getLocalHost();
return addr.getHostName();
}
catch (Exception e)
{
log.error("IpGetter.getLocalHostName出现异常!异常信息:" + e.getMessage());
return "";
}
}

/**
* Description: linux下获得本机IPv4 IP<br>
* @return
* @see
*/
public static String getLocalIP()
{
String ip = "";
try
{
Enumeration<NetworkInterface> e1 = (Enumeration<NetworkInterface>)NetworkInterface.getNetworkInterfaces();
while (e1.hasMoreElements())
{
NetworkInterface ni = e1.nextElement();

//单网卡或者绑定双网卡
if ((NETWORK_CARD.equals(ni.getName()))
|| (NETWORK_CARD_BAND.equals(ni.getName())))
{
Enumeration<InetAddress> e2 = ni.getInetAddresses();
while (e2.hasMoreElements())
{
InetAddress ia = e2.nextElement();
if (ia instanceof Inet6Address)
{
continue;
}
ip = ia.getHostAddress();
}
break;
}
else
{
continue;
}
}
}
catch (SocketException e)
{
log.error("IpGetter.getLocalIP出现异常!异常信息:" + e.getMessage());
}
return ip;
}

}


PS:存在虚拟机的linux的环境可能会多出一个虚拟网卡,virbro,对应的ip地址是 192.168.122.1


参考:http://www.iteye.com/topic/654345

更多相关文章

  1. Linux系统下用C语言获取MAC地址
  2. Red Hat Linux下如何修改网卡MAC地址
  3. 在fc8安装TP-Linux WN3210G+USB无线网卡,提示wlan0 No scan resul
  4. 一些下载交叉编译环境的地址
  5. 如何使用SQL语句查到当前SQL SERVER 2000服务器的IP地址
  6. 如何通过HttpURLConnection得到http 302的跳转地址
  7. 让Android 设备通过USB 转RJ45有线网卡上网
  8. Java Android套接字连接。错误的IP地址导致应用程序停止响应
  9. Android利用IP地址定位城市(全世界可用)

随机推荐

  1. Ubuntu 虚拟机android平台搭建总结
  2. Android(安卓)WebView 向上向下滑动监听
  3. Android基础 | 控件基础 | ImageView用法
  4. 如何将应用发布到市场上去
  5. 长按power键Android9.0关机耗时分析
  6. 关于android studio开发APP中,给单个Activ
  7. Android将byte数组写入文件
  8. Android XML�O置屏幕方向(android:screenO
  9. 怎么让 Android 程序一直后台运行,像 QQ
  10. Android之View篇1————初识View