博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java获取到本机的IP的正确姿势
阅读量:6071 次
发布时间:2019-06-20

本文共 1646 字,大约阅读时间需要 5 分钟。

hot3.png

用以下代码

 hostaddress = InetAddress.getLocalHost().getHostAddress()

在大部分情况下可以正确获取到本机的IP地址。但是在不能联网的情况下,或者手动修改过hosts文件的情况下,你可能获取到的是

127.0.0.1

那么如何能够准确的获取到本机的IP呢?

我们看看Solr是如何做的: 

// normalize host removing any url scheme.  // input can be null, host, or url_prefix://host  private String normalizeHostName(String host) throws IOException {    if (host == null || host.length() == 0) {      String hostaddress;      try {        hostaddress = InetAddress.getLocalHost().getHostAddress();      } catch (UnknownHostException e) {        hostaddress = "127.0.0.1"; // cannot resolve system hostname, fall through      }      // Re-get the IP again for "127.0.0.1", the other case we trust the hosts      // file is right.      if ("127.0.0.1".equals(hostaddress)) {        Enumeration
netInterfaces = null; try { netInterfaces = NetworkInterface.getNetworkInterfaces(); while (netInterfaces.hasMoreElements()) { NetworkInterface ni = netInterfaces.nextElement(); Enumeration
ips = ni.getInetAddresses(); while (ips.hasMoreElements()) { InetAddress ip = ips.nextElement(); if (ip.isSiteLocalAddress()) { hostaddress = ip.getHostAddress(); } } } } catch (Exception e) { SolrException.log(log, "Error while looking for a better host name than 127.0.0.1", e); } } host = hostaddress; } else { if (URLUtil.hasScheme(host)) { host = URLUtil.removeScheme(host); } } return host; }

 

 

 

转载于:https://my.oschina.net/icoderme/blog/2054342

你可能感兴趣的文章
网络安全管理技术作业-SNMP实验报告
查看>>
根据Uri获取文件的绝对路径
查看>>
Fundebug前端JavaScript插件更新至1.6.0,新增test()方法用于测试
查看>>
Flutter 插件开发:以微信SDK为例
查看>>
.NET[C#]中NullReferenceException(未将对象引用到实例)是什么问题?如何修复处理?...
查看>>
复杂业务下,我们为何选择Akka作为异步通信框架?
查看>>
边缘控制平面Ambassador全解读
查看>>
Windows Phone 7 利用计时器DispatcherTimer创建时钟
查看>>
程序员最喜爱的12个Android应用开发框架二(转)
查看>>
vim学习与理解
查看>>
DIRECTSHOW在VS2005中PVOID64问题和配置问题
查看>>
MapReduce的模式,算法以及用例
查看>>
《Advanced Linux Programming》读书笔记(1)
查看>>
zabbix agent item
查看>>
一步一步学习SignalR进行实时通信_7_非代理
查看>>
AOL重组为两大业务部门 全球裁员500人
查看>>
字符设备与块设备的区别
查看>>
为什么我弃用GNOME转向KDE(2)
查看>>
Redis学习记录初篇
查看>>
爬虫案例若干-爬取CSDN博文,糗事百科段子以及淘宝的图片
查看>>