网络支持
Java为网络支持提供了 java.net 包。
包括 URL和 URLConnection等类。
使用 InetAddress
InetAddress类代表 IP 地址, 包含2个子类:
Inet4Address : 代表 IPv4, Internet Protocol version 4
Inet6Address: 代表 IPv6, Internet Protocol version 6
InetAddress没有提供构造器, 提供下面两个静态方法获取InetAddress实例。
getByName(String host) : 根据主机名
getByAddress(byte[] addr): 根据原始IP地址
提供下面方法获取对应IP和主机名
getCanonicalHostName():获取全限定名称
getHostAddress():获取IP字符串
getHostName(): 获取主机
在isReachable(timeOut), 测试是否可达地址。
代码实现中–目前其实在WINDOWS平台,并没有采用ICMP协议来完成,而是采用TCP的PORT 7来完成功能的。因而不是通常从们所讲的PING的程序
public class InetAddressTest {
public static void main(String[] args) throws Exception{
InetAddress ip = InetAddress.getByName("www.baidu.com");
System.out.println("是否可达:" + ip.isReachable(2000));
//获取ip字符串
System.out.println(ip.getHostAddress());
InetAddress local = InetAddress.getByAddress(new byte[]{
127, 0, 0, 1});
System.out.println("是否可达:" + local.isReachable(2000));
System.out.println(local.getCanonicalHostName());
}
}
//Output
是否可达:false
220.181.111.37
是否可达:true
localhost
URLEncoder
URLEncoder 和 URLDecoder, 完成普通字符串和 application/x-www-form-urlencoded
MIME类型之间的转换。
包含西欧字符的普通字符串不会转换, 中文字符会转换, 每个中文字符占两个字节,可以转成2个16进制的数字, “%XX%XX”, 格式。
转换时需要指定字符集, 字符集不同对应的字节数,并不完全相同。
String urlStr = URLEncoder.encode("普通", "GBK");
System.out.println(urlStr);
String word = URLDecoder.decode(urlStr, "GBK");
System.out.println(word);
urlStr = URLEncoder.encode("普通",