java获取本地IP地址,java获取本地多张网卡IP

java.net.InetAddress类


IP地址是IP使用的32位(IPv4)或者128位(IPv6)位无符号数字,它是传输层协议TCP,UDP的基础。InetAddress是Java对IP地址的封装,在java.net中有许多类都使用到了InetAddress,
包括ServerSocket,Socket,DatagramSocket等等。


InetAddress的实例对象包含以数字形式保存的IP地址,同时还可能包含主机名(如果使用主机名来获取InetAddress的实例,或者使用数字来构造,并且启用了反向主机名解析的功能)。
InetAddress类提供了将主机名解析为IP地址(或反之)的方法。


InetAddress对域名进行解析是使用本地机器配置或者网络命名服务(如域名系统(Domain Name System,DNS)和网络信息服务(Network Information Service,NIS))来实现。对于DNS来说,
本地需要向DNS服务器发送查询的请求,然后服务器根据一系列的操作,返回对应的IP地址,为了提高效率,通常本地会缓存一些主机名与IP地址的映射,这样访问相同的地址,就不需要重复发送DNS请求了。
在java.net.InetAddress类同样采用了这种策略。在默认情况下,会缓存一段有限时间的映射,对于主机名解析不成功的结果,会缓存非常短的时间(10秒)来提高性能。


//在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组。

static InetAddress[] getAllByName(String host)


//返回此 InetAddress 对象的原始 IP 地址。

static InetAddress getByAddress(byte[] addr)


// 根据提供的主机名和 IP 地址创建 InetAddress。

static InetAddress getByAddress(String host,byte[] addr)


//在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组。

static InetAddress getByName(String host)


// 返回本地主机。

static InetAddress getLocalHost()


//获取此 IP 地址的完全限定域名。

getCanonicalHostName() 


// 获取此 IP 地址的主机名。    

getHostName() 


              

中文官方文档地址:http://download.oracle.com/technetwork/java/javase/6/docs/zh/api/java/net/InetAddress.html

java项目内部获取IP地址:
只针对单一网卡的,直接获取本地IP地址

String ip = InetAddress.getLocalHost().getHostAddress();


获取网站的IP:

InetAddress[] addresses = InetAddress.getByName("www.sina.com.cn"); 


针对多网卡情况获取IP:
 

try {
    Enumeration<NetworkInterface> interfaces=null;
    interfaces = NetworkInterface.getNetworkInterfaces();
    while (interfaces.hasMoreElements()) {  
        NetworkInterface ni = interfaces.nextElement(); 
        Enumeration<InetAddress> addresss = ni.getInetAddresses();
        while(addresss.hasMoreElements()){
            InetAddress nextElement = addresss.nextElement();
            String hostAddress = nextElement.getHostAddress();
            System.out.println("本机IP地址为:" +hostAddress);
        }
    } 
} catch (Exception e) {
    e.printStackTrace();
}
 
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值