Java判断本机IP地址类型(第一版)

简介: 1 package net; 2 3 import java.net.*; 4 5 /* 6 * getAddress方法和getHostAddress类似,它们的唯一区别是getHostAddress方法返回的是字符串形式的IP地址, 7 * 而getAddress方法返回的是byte数组形式的IP地址。
 1 package net;
 2 
 3 import java.net.*;
 4 
 5 /*
 6  *  getAddress方法和getHostAddress类似,它们的唯一区别是getHostAddress方法返回的是字符串形式的IP地址,
 7  *  而getAddress方法返回的是byte数组形式的IP地址。
 8  *  Java中byte类型的取值范围是-128?127。如果返回的IP地址的某个字节是大于127的整数,在byte数组中就是负数。
 9  *  由于Java中没有无符号byte类型,因此,要想显示正常的IP地址,必须使用int或long类型。
10  */
11 public class MyIp
12 {
13     /*
14      * ipv6共8段
15      */
16     public static void main(String[] args) throws Exception
17     {
18        // InetAddress ia = InetAddress.getByName("www.cnblogs.com");
19         InetAddress ia = InetAddress.getLocalHost();//本地主机的 IP 地址
20         //System.out.println(ia);
21         //byte ip[] = ia.getAddress();
22         /*
23         for (byte part : ip)
24             System.out.print(part + " ");
25         System.out.println("");
26         for (byte part : ip)
27         {
28             int newIp = (part < 0) ? 256 + part : part;
29             System.out.print(newIp + " ");
30         }
31         */
32         
33        /* int[] array = new int[5];
34         for(int i=0; i<ip.length; i++) {
35             array[i] = (ip[i] < 0) ? 256 + ip[i]  : ip[i];
36             
37         }*/
38         //通过判断ip地址中点号(不是冒号)的来划分ip字符串,根据字符串长度判断是ipv4还是ipv6
39         String ip = ia.getHostAddress();//没有返回主机名
40         System.out.println(ip);
41         //String str[] = new String[10];
42         String str[] = ip.split("\\.");//由于"."是regex的字符,所以需要转义
43         //System.out.println(str.length);
44         int num = Ipv4OrIpv6(str);
45         if(num==4) {
46             System.out.println("本机IP是IPV4类型");
47             int temp = Integer.valueOf(str[0]);
48             String s = TellIpType(temp);
49             System.out.println("属于" + s + "类IP地址!");
50         }
51         else {
52             System.out.println("本机IP是IPV6类型");
53         }
54         
55     }
56     /*
57      * 根据第一个字节判断IP地址类型
58      */
59     public static String TellIpType(int num) {
60         if(num<127)
61             return "A";
62         else if(num<192)
63             return "B";
64         else if(num<224)
65             return "C";
66         else if(num<240)
67             return "D";
68         else
69             return "E";
70     }
71     //
72     public static int Ipv4OrIpv6(String s[]) {
73         int num = 0;
74         return s.length;
75     }
76     
77 }

 

目录
相关文章
|
12月前
|
安全 Java 编译器
Java类型提升与类型转换详解
本文详解Java中的类型提升与类型转换机制,涵盖类型提升规则、自动类型转换(隐式转换)和强制类型转换(显式转换)的使用场景与注意事项。内容包括类型提升在表达式运算中的作用、自动转换的类型兼容性规则,以及强制转换可能引发的数据丢失和运行时错误。同时提供多个代码示例,帮助理解byte、short、char等类型在运算时的自动提升行为,以及浮点数和整型之间的转换技巧。最后总结了类型转换的最佳实践,如避免不必要的转换、使用显式转换提高可读性、金融计算中使用BigDecimal等,帮助开发者写出更安全、高效的Java代码。
621 0
|
12月前
|
安全 IDE Java
Java记录类型(Record):简化数据载体类
Java记录类型(Record):简化数据载体类
680 143
|
12月前
|
Java 测试技术
Java浮点类型详解:使用与区别
Java中的浮点类型主要包括float和double,它们在内存占用、精度范围和使用场景上有显著差异。float占用4字节,提供约6-7位有效数字;double占用8字节,提供约15-16位有效数字。float适合内存敏感或精度要求不高的场景,而double精度更高,是Java默认的浮点类型,推荐在大多数情况下使用。两者都存在精度限制,不能用于需要精确计算的金融领域。比较浮点数时应使用误差范围或BigDecimal类。科学计算和工程计算通常使用double,而金融计算应使用BigDecimal。
3784 102
|
10月前
|
存储 算法 安全
Java集合框架:理解类型多样性与限制
总之,在 Java 题材中正确地应对多样化与约束条件要求开发人员深入理解面向对象原则、范式编程思想以及JVM工作机理等核心知识点。通过精心设计与周密规划能够有效地利用 Java 高级特征打造出既健壮又灵活易维护系统软件产品。
246 7
|
11月前
|
Java 开发者
Java 函数式编程全解析:静态方法引用、实例方法引用、特定类型方法引用与构造器引用实战教程
本文介绍Java 8函数式编程中的四种方法引用:静态、实例、特定类型及构造器引用,通过简洁示例演示其用法,帮助开发者提升代码可读性与简洁性。
|
12月前
|
安全 算法 Java
Java泛型编程:类型安全与擦除机制
Java泛型详解:从基础语法到类型擦除机制,深入解析通配符与PECS原则,探讨运行时类型获取技巧及最佳实践,助你掌握泛型精髓,写出更安全、灵活的代码。
|
存储 网络协议 Java
Java获取客户端IP问题:返回127.0.0.1
总结:要解决Java获取客户端IP返回127.0.0.1的问题,首先要找出原因,再采取合适的解决方案。请参考上述方案来改进代码,确保在各种网络环境下都能正确获取客户端IP地址。希望本文对您有所帮助。
844 25
|
存储 Java 开发者
Java 中 Set 类型的使用方法
【10月更文挑战第30天】Java中的`Set`类型提供了丰富的操作方法来处理不重复的元素集合,开发者可以根据具体的需求选择合适的`Set`实现类,并灵活运用各种方法来实现对集合的操作和处理。
988 113
|
搜索推荐 Java 定位技术
Java实现利用GeoLite2-City.mmdb根据IP定位城市的方法
在城市,国家,地区等地理位置数据获取之后,你可以依指定的业务需求,来进行进一步的数据处理。例如,你可以设计一个应用,根据用户的 IP 地址来个性化地展示内容,或者用于分析网络请求的来源等。
2391 20
|
存储 传感器 缓存
java变量与数据类型:整型、浮点型与字符类型
### Java数据类型全景表简介 本文详细介绍了Java的基本数据类型和引用数据类型,涵盖每种类型的存储空间、默认值、取值范围及使用场景。特别强调了`byte`、`int`、`long`、`float`、`double`等基本类型在不同应用场景中的选择与优化,如文件流处理、金融计算等。引用数据类型部分则解析了`String`、数组、类对象、接口和枚举的内存分配机制。
635 15

热门文章

最新文章