现在我们来学习一个在Java中用来表示IP的类:InetAddress。
接下来打开一下 API帮助文档
来查询一下。
此类表示互联网协议 (IP) 地址
这句话其实也就是说,这个类的对象也就表示IP的对象。
但是会有一个问题,IP有两种,一种是IPv4,一种是Ipv6,你到底是哪个的对象?
其实在下面也有,它有两个子类:Inet4Address
,Inet6Address
,所以我们在获取这个类的对象的时候,底层会有一个操作:它会先判断你当前系统用的是 4版本
的,还是 6版本的
。
- 如果你用的是
4版本
的,那么它创建的其实是第一个子类的对象返回; - 如果你用的是
6版本
的,那么它创建的其实是第二个子类的对象返回;
那我如何获取它的对象呢?
要注意了,这个类没有对外提供构造方法,所以我们不能直接 new
,而是需要通过它的静态方法 getByName
获取到对象,这个方法的底层其实就是做了一个判断,判断你用的是IPv4还是IPv6,判断完了后,它会创建对应的子类对象给你进行返回。
![image-20240508094847196](https://img-blog.csdnimg.cn/img_convert/fec618420e2ee63bb642bae42e2401f1.png)
对象有了,就可以调用其他的方法了。
static InetAddress getByName(String host) 确定主机名称的IP地址。主机名称可以是机器名称,也可以是IP地址
String getHostName() 获取此IP地址的主机名
String getHostAddress() 返回文本显示中的IP地址字符串
首先来获取到InetAddress的对象
//在括号中可以传入IP或者主机名
InetAddress address = InetAddress.getByName("192.168.1.100"); //这个IP你不一定要写自己的,写其他的也是可以的
System.out.println(address);//IP对象:/192.168.201.1 就已经获取到了
接下来用主机名创建对象,主机名其实就是你给自己电脑起的名字,如果你没起,它也会有默认的。
win + e 打开我的电脑,右击空白处点击属性
![image-20240508094000161](https://img-blog.csdnimg.cn/img_convert/b3a4192a44d3a9e5759def66ee1eafbb.png)
如下图红色箭头的地方就是你电脑的名字。
![image-20240508094105940](https://img-blog.csdnimg.cn/img_convert/e2a2f4c0fbfbcd53ddfa15e1356401d8.png)
这个名字其实是可以修改的,点击上面的 重命名这台电脑
![image-20240508094146499](https://img-blog.csdnimg.cn/img_convert/66363ef99193c7dad49ba51edd6fb205.png)
现在就可以修改计算机的名字,修改完了需要重启。
![image-20240508094232501](https://img-blog.csdnimg.cn/img_convert/cf98093a47b04e41811c306ed6ae7c51.png)
建议:计算机的名字不要用中文,如果用中文,后面在学习其他知识的时候有可能会有问题的。
InetAddress address = InetAddress.getByName("DESKTOP-5OJJSAM");
System.out.println(address);// Epiphany/192.168.201.1
对象有了,就可以调用里面的方法了,但是在调用方法之前,你需要知道这个对象是表示什么的。
address
表示的是IP的对象,IP表示网络中的某台电脑,所以这个类的对象我们其实就可以把它真正的将它看做是一台电脑的对象。
getHostName()
细节:如果你的电脑因为网络原因,或者局域网中压根就没有这台电脑,它此时是获取不到它的主机名的,如果获取不到,它就是以IP的形式进行体现的,因此如果这个方法返回一个IP,不要惊慌。
//获取到电脑的主机名
String name = address.getHostName();
System.out.println(name);//DESKTOP-5OJJSAM
//获取到电脑的IP
String ip = address.getHostAddress();
System.out.println(ip);//192.168.1.100
那这个代码有什么用呢?其实这个代码是我们前置的代码,我一旦获取到某一台电脑之后,下面就可以给这台电脑发送信息了。