Java获取IP地址和域名:

时间:2021-07-23 14:39:51

获取IP地址和域名:


本实例实现获取IP地址和域名的功能,能够获取本机的IP地址,机器名,以及远程服务器的IP地址。
关键技术:
获取IP地址和域名的关键技术:
---通过java.net.InetAddress的getLocalHost静态方法可以获得本机的网络地址信息,也是一个InetAddress对象

---通过InetAddress的getHostAddress的实例方法可以获取该网络地址的IP信息。
----通过InetAddress的getHostName的实例方法可以获得该网络地址的IP信息。
----InetAddress的getByName静态方法根据域名获得该域名代表的主机的网络地址信息,返回的是一个InetAddress对象
---当一个主机配置多个网络地址时,可以通过InetAddress的getAllByName静态方法根据域名获得该域名代表的主机的所有网络地址信息,返回的是一组InetAddress对象。


import java.net.InetAddress;
import java.net.UnknownHostException;
public class GetIPAddress {
//获取本机的IP地址
public static String getLocalIP() throws UnknownHostException {
InetAddress addr=InetAddress.getLocalHost();
return addr.getHostAddress();
}

//获取本机的机器名
public static String getLocalHostName() throws UnknownHostException{
InetAddress addr=InetAddress.getLocalHost();
return addr.getHostName();
}

//根据域名好的本机的IP地址
public static String getIPByName(String hostName) throws UnknownHostException{
InetAddress addr=InetAddress.getByName(hostName);
return addr.getHostAddress();
}

//根据域名获得主机所有的IP地址
public static String[] getAllIPByName(String hostName) throws UnknownHostException{
InetAddress[] addrs=InetAddress.getAllByName(hostName);
String[] ips=new String[addrs.length];
for (int i = 0; i < ips.length; i++) {
ips[i]=addrs[i].getHostAddress();
}
return ips;
}

public static void main(String[] args) throws UnknownHostException {
//获取本机的IP地址和机器名
System.out.println("本机IP Local IP"+GetIPAddress.getLocalIP());
System.out.println("本地主机名 Local HostName"+GetIPAddress.getLocalHostName());

//获得百度的IP地址
String hostName="www.baidu.com";
System.out.println("域名为"+hostName+"的主机的IP地址");
System.out.println(GetIPAddress.getIPByName(hostName));


System.out.println("域名为:"+hostName+"的主机饿所有IP地址");
String[] ips=GetIPAddress.getAllIPByName(hostName);
for (int i = 0; i < ips.length; i++) {
System.out.println(ips[i]);
}
}
}

分析:
(1)getLocalIP方法获得本机的IP地址,首先通过InetAddress的getLocalHost静态方法获得本机的网络地址信息,然后通过getHostAddress实例方法获得该网络地址的IP地址;getLocalHostName方法获得本机的机器名,调用了getHostName方法。

(2)getIPByName方法根据域名获得主机的IP地址,使用了InetAddress的getByName静态方法;getAllIPByName方法根据域名获得主机的所有IP地址,使用了InetAddress的getAllByName方法。