Java提供了InetAddress类来代表IP地址,InetAddress下还有两个子类:Inet4Address
、Inet6Address
,它们分别代表Internet Protocol version 4(IPv4)地址和Internet Protocol version 6(IPv6)地址。
InetAddress常用方法:
验证是否可达:
boolean isReachable(int timeout)
:等价于isReachable(null, 0 , timeout)boolean isReachable(NetworkInterface netif, int ttl, int timeout)
:测试该地址是否可达。 获取InetAddress 实例:
getByName(String host)
:根据主机获取对应的InetAddress 对象实例。getByAddress(byte[] addr)
:根据原始IP地址 来 获取对应的InetAddress 对象实例。获取InetAddress 实例对应的IP地址和主机名:
String getHostName()
:获取此IP地址的主机名 。String getCanonicalHostName()
:获取此IP地址的全限定域名 。String getHostAddress()
:返回该InetAddress 实例对应的IP地址字符串(以字符串形式)。byte[] getAddress()
:获取原始 IP 地址。其他:
boolean isMulticastAddress()
:检查 InetAddress 是否为 IP 多播地址的实用程序例程。 boolean isAnyLocalAddress()
:检查 InetAddress 是否为通配符地址的实用程序例程。boolean isLoopbackAddress()
:用于检查 InetAddress 是否为回环地址的实用程序。(127.x.x.x)boolean isLinkLocalAddress()
:检查 InetAddress 是否为链路本地地址的实用程序例程。(169.254.0.0/16)代码案例如下:
public void inetAddressTest() throws IOException {
// 根据域名来获取对应的InerAddress实例
InetAddress ip = InetAddress.getByName("www.baidu.com");
// 判断是否可达
System.out.println("百度是否可达:" + ip.isReachable(2000));
// 获取该InetAddress实例的IP字符串
System.out.println(ip.getHostAddress());
//获取主机名(域名)
System.out.println(ip.getHostName());
//获取原始 IP 地址
System.out.println(ip.getAddress());
// 获取该InetAddress实例对应的全限定域名
//System.out.println(ip.getCanonicalHostName());
// 根据原始IP地址来获取对应的InetAddress实例
InetAddress local = InetAddress.getByAddress(new byte[] { 127, 0, 0, 1 });
System.out.println("本机是否可达:" + local.isReachable(1000));
}
URL包含以下信息:
java.net.URL
常用构造函数和方法:
构造函数:
URL(String url)
:根据url构建一个URL对象
URL(String protocol, String host, int port, String file)
:创建一个URL从指定对象 protocol,host,port 号码,和file。
方法:
String getFile()
:获取此文件的名称URL。
String getHost()
:获取此主机名(URL如果适用)。
String getPath()
:获取此部分的路径部分URL。
int getPort()
:获取此URL的端口号。
URLDecoder和URLEncoder的作用主要是用于普通字符串和application/x-www-form-rulencoded MIME字符串之间的转换
URLDecoder类包含一个decode(String s,String charcter)
静态方法,它可以将看上去乱码的特殊字符串转换成普通字符串。
URLEncoder类包含一个encode(String s,String charcter)
静态方法,它可以将普通字符串转换成application/x-www-form-urlencoded MIME字符串。
代码案例:
public void URLDecoderURLEncoderTest() throws UnsupportedEncodingException {
//将application/x-www-form-urlencoded字符串转换成普通字符串
String decode = URLDecoder.decode("https://blog.csdn.net/qq_35427589/article/details/122321132?ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%85%B1%E9%A5%AE%E4%B8%80%E6%9D%AF%E6%97%A0", "UTF-8");
System.out.println("urlDecode:"+decode);
//将普通字符串转换成application/x-www-form-urlencoded字符串
String encode = URLEncoder.encode("共饮一杯无" , "UTF-8");
System.out.println("urlEncode:"+encode);
}
输出如下: urlDecode:https://blog.csdn.net/qq_35427589/article/details/122321132?ops_request_misc=&request_id=&biz_id=102&utm_term=共饮一杯无 urlEncode:%E5%85%B1%E9%A5%AE%E4%B8%80%E6%9D%AF%E6%97%A0
在电脑的控制面板网络连接中可以看到IPv4和IPv6的存在。
格式为X:X:X:X:X:X:X:X,其中每个X表示地址中的16b,以十六进制表示,例如:
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
在某些情况下,一个IPv6地址中间可能包含很长的一段0,可以把连续的一段0压缩为“::”。但为保证地址解析的唯一性,地址中”::”只能出现一次。
为了实现IPv4-IPv6互通,IPv4地址会嵌入IPv6地址中,此时地址常表示为:X:X:X:X:X:X:d.d.d.d,前96b采用冒分十六进制表示,而最后32b地址则使用IPv4的点分十进制表示,例如::192.168.0.1与::FFFF:192.168.0.1就是两个典型的例子,注意在前96b中,压缩0位的方法依旧适用。
相关文章: Java网络编程入门(软件结构、网络通信协议、网络编程三要素) Java网络编程之通过代码实现Socket通信) Java网络编程之实现文件上传