Java网络编程之InetAddress类详解,URL和URI的区别
        【摘要】  InetAddressJava提供了InetAddress类来代表IP地址,InetAddress下还有两个子类:Inet4Address、Inet6Address,它们分别代表Internet Protocol version 4(IPv4)地址和Internet Protocol version 6(IPv6)地址。InetAddress常用方法:验证是否可达:boolean isRe...
    
    
    
    InetAddress
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):测试该地址是否可达。- netif – 将通过其完成测试的 NetworkInterface,或者为任何接口为 null
- ttl – 要尝试的最大跳数或默认值为 0,负值将导致抛出 IllegalArgumentException。
- timeout – 超时值(以毫秒为单位)指示尝试应花费的最长时间。 如果操作在得到应答前超时,则认为主机不可达。负值将导致抛出 IllegalArgumentException。
 
获取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 多播地址的实用程序例程。- IP v4多播地址是 D 类地址,即地址的前四位是 1110;
- IPv6地址开头的 11111111 将该地址标识为多播地址。
 
- 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和URI
- URL是全球资源定位符的英文所写,在浏览器中输入的地址就是URL。比如:https://blog.csdn.net/qq_35427589/article/details/124088153就是一个URL。
URL包含以下信息:
- 用于访问资源的协议
- 服务器的位置(无论是通过IP地址还是域名)
- 服务器上的端口号(可选)
- 资源在服务器目录结构中的位置
- 片段标识符(可选)
- URI是Web上可用的每种资源 - HTML文档、图像、视频片段、程序,由一个通过通用资源标志符(Universal Resource Identifier, 简称"URI")进行定位。
URL和URI差别
- URL(统一资源定位符)主要用于链接网页,网页组件或网页上的程序,借助访问方法(http,ftp,mailto等协议)来检索位置资源。
- URI是一个相对来说更广泛的概念。URL是URI的一种,是URI命名机制的一个子集,能够说URI是抽象的,而详细要使用URL来定位资源。
- Web上的每一种资源如:图片、文档、视频等,都是由URI定位的。这里所谓的定位指的是web上的资源相对于主机server来说,存放在server上的详细路径。
- URL是internet上用来描写叙述信息资源文件的字符串。用在客户程序和server上,定位客户端连接server所须要的信息,它不仅定位了这个信息资源,并且定义了怎样找到这个资源。
- URL指定要使用的协议类型,而URI不涉及协议规范。
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的端口号。
本文内容到此结束了,
如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。
如有错误❌疑问💬欢迎各位大佬指出。
保持热爱,奔赴下一场山海。🏃🏃🏃
            【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
                cloudbbs@huaweicloud.com
                
            
        
        
        
        
        
        
        - 点赞
- 收藏
- 关注作者
 
             
           
评论(0)