使用InetAddress
Java提供了InetAddress类来代表IP地址,InetAddress下还有两个子类:Inet4Address、Inet6Address,它们分别代表Internet Protocol version4(IPv4)地址和Internet Protocol version6(IPv6)。
InetAddress类没有提供构造器,而是提供了如下两个静态方法来获取InetAddress实例:
方法 | |
---|---|
getByName(String host) | 根据主机获取对应的InetAddress对象 |
getByAdderss(byte[] addr) | 根据原始IP地址来获取对应的InetAddress对象 |
InetAddress还提供了如下三个方法来获取InetAddress实例对应的IP地址和主机名:
方法 | |
---|---|
String getCanonicalHostName() | 获取此IP地址的全限定域名 |
String getHostAddress() | 返回该InetAddress实例对应的IP地址字符串(以字符串形式) |
String getHostName() | 获取此IP地址的主机名 |
除此之外,InetAddress类还提供了一个getLocalHost()方法来获取本机IP地址对应的InetAddress实例。提供了一个isReachable()方法,用于测试是否可以到达该地值。
测试InetAddress类的代码:
public class InetAddressTest {
public static void main(String[] args)throws Exception{
//根据主机名来获取对应的InetAddress实例
InetAddress ip = InetAddress.getByName("www.baidu.com");
//判断是否可到达
System.out.println("baidu是否可达:" + ip.isReachable(2000));
//获取该InetAddress实例的Ip字符串
System.out.println(ip.getHostAddress() + " " + ip.getHostName());
//根据原始IP地址来获取对应的InetAddress实例
InetAddress local = InetAddress.getByAddress(new byte[]{127,0,0,1});
System.out.println("本机是否可达:" + local.isReachable(5000));
//获取该InetAddress实例对应的全限定域名
System.out.println(local.getCanonicalHostName());
}
}
结果:
baidu是否可达:true
220.181.111.188 www.baidu.com
本机是否可达:true
127.0.0.1
使用URLDecoder和URLEncoder
URLDecoder和URLEncoder用于完成普通字符串和application/x-www-form-urlencoded MIME字符串。
方法 | |
---|---|
decode(String s, String enc) | URLDecoder类所包含,可以将application/x-www-form-urlencoded MIME字符串转换为普通字符串 |
encode(String s, String enc) | URLEncoder类所包含,可以将普通字符串转换为application/x-www-form-urlencoded MIME字符串 |