Java常见问题汇总-阿里云开发者社区

开发者社区> fibojie> 正文

Java常见问题汇总

简介: 来源: StackOverflow, 自己使用中总结 集合 并发 网络 获取本机IP InetAddress inetAddress = InetAddress.getLocalHost(); String host = inetAddress.getHostAddress(); System.out.print("host is " + host +
+关注继续查看

来源: StackOverflow, 自己使用中总结

集合

并发

网络

获取本机IP

InetAddress inetAddress = InetAddress.getLocalHost();
String host = inetAddress.getHostAddress();
System.out.print("host is " + host + "\n");

结果: host is 127.0.0.1

在linux环境下,没法获取正确的ip地址,当然也有一部分人碰巧获取了正确的结果。实际上这个函数是按照host来查找ip地址的,在linux中这些地址在/etc/hosts文件中:

127.0.0.1 localhost
127.0.0.1 ubuntu
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

因此程序里也只是读取了该文件下的ip地址,用户的网络如果是静态ip的话,自己手动设置一下,也能返回正确的IP地址,但是这么做的确是很麻烦。还有一个方法就是,执行ifconfig,解析对应的结果。

或者使用NetworkInterface接口来获取:

public static String getHostIp() {
        Enumeration<NetworkInterface> netInterfaces = null;
        String host = "";
        try {
            netInterfaces = NetworkInterface.getNetworkInterfaces();
            while (netInterfaces.hasMoreElements()) {
                NetworkInterface ni = netInterfaces.nextElement();
                if(!ni.getName().isEmpty()) {
                    Enumeration<InetAddress> ips = ni.getInetAddresses();
                    while (ips.hasMoreElements()) {
                        InetAddress inetAddress = ips.nextElement();
                        host = inetAddress.getHostAddress();
                        log.info("IP:" + host);
                        if(inetAddress.getHostAddress().matches("\\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.|$)){4}\\b")) {
                            return host;
                        }

                    }
                }
            }
        } catch (Exception e) {
            if(log.isInfoEnabled()) {
                log.info(e.getMessage());
            }
        }
        return host;
    }

其他

package-info.java作用

为标注在包上Annotation提供便利;
声明友好类和包常量;
提供包的整体注释说明。

示例说明:

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
JAVA常见算法题(二十一)
package com.xiaowu.demo; //求1+2!+3!+...+20!的和。 public class Demo21 { public static void main(String[] args) { sum(20); } public...
638 0
JAVA常见算法题(二十四)
package com.xiaowu.demo; //一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 public class Demo24 { public static void main(String[] args) { f2...
567 0
Android Java 框架基础[知识点汇总]
学习android的过程中,把整个框架的基础结构牢记很重要,特此摘录了一些这个框架的一些基础知识,在使用的过程中按照这个框架学习,事半功倍。 开发过程中参考JDK的文档和android的sdk文档可以清楚遇到的很多问题,遇到问题是现在这两个文档中一般都能找到原因(安装sdk的文档参考http://www.
754 0
Java集合类源码分析汇总
Java集合类基础:http://www.cnblogs.com/hzmark/archive/2012/12/17/CollectionBase.html ArrayList源码分析:http://www.
789 0
学生党如何拿到阿里技术offer: 《阿里巴巴常考面试题及汇总答案(Java方向)上篇》
今天为大家分享不是前辈们的面试经历而是面试题目,这篇题目可谓良心之作,只不过原文链接已经失效,在这里还是谢谢原作者。
50829 0
JAVA常见算法题(十五)
package com.xiaowu.demo; /** * * 输入三个整数x,y,z,请把这三个数由小到大输出。 * * @author WQ * */ public class Demo15 { public static void main(String[] ar...
533 0
Java List面试题汇总
1、你知道的List都有哪些? 2、List和Vector有什么区别? 3、List是有序的吗? 4、ArrayList和LinkedList的区别?分别用在什么场景? 5、ArrayList和LinkedList的底层数据结构是什么? 6、Array...
690 0
+关注
fibojie
技术狂热,热爱分布式计算和中间件技术
25
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载