InetAddress类
InetAddress类是Java对IP地址(包括IPv4和IPv6)的高层表示。大多数其他网络类都要用到这个类,包括Socket,ServerSocket,URL,DatagramSocket,DatagramPacket等。一般来讲,它包括一个主机名和一个IP地址。
创建InetAddress对象
通过主机名创建
package com.dy.xidian; import java.net.InetAddress;
import java.net.UnknownHostException; public class Create {</span><span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span><span style="color: #000000"> main(String[] args){
</span><span style="color: #0000ff">try</span><span style="color: #000000"> {
</span><span style="color: #008000">//</span><span style="color: #008000">查询我的网站IP</span>
InetAddress address = InetAddress.getByName("www.xdysite.cn"<span style="color: #000000">);
System.out.println(</span>"my site:"+<span style="color: #000000">address.getHostAddress());
</span><span style="color: #008000">//</span><span style="color: #008000">查询百度的所有IP</span>
InetAddress[] baidu = InetAddress.getAllByName("www.baidu.com"<span style="color: #000000">);
System.out.println(</span>"baidu:"<span style="color: #000000">);
</span><span style="color: #0000ff">for</span><span style="color: #000000">(InetAddress addr : baidu)
System.out.println(</span>"\t"+<span style="color: #000000">addr.getHostAddress());
</span><span style="color: #008000">//</span><span style="color: #008000">查询本机IP
</span><span style="color: #008000">//</span><span style="color: #008000">如果主机名存在且是一个FQDN的话,那么会得到真实的IP地址,否则会得到127.0.0.1</span>
InetAddress local =<span style="color: #000000"> InetAddress.getLocalHost();
System.out.println(</span>"local:"+<span style="color: #000000">local.getHostAddress());
} </span><span style="color: #0000ff">catch</span><span style="color: #000000"> (UnknownHostException e) {
e.printStackTrace();
}
}
}
传入的参数为主机名,在构建InetAddress对象时,会去DNS服务器中获取对应的地址,如果在DNS中查找不到对应的IP地址,前两个会抛异常(UnknownHostException),getLocalHost()则会返回localhost和127.0.0.1。
通过IP创建
InetAddress address = InetAddress.getByName("202.117.119.1");
System.out.println(address.getHostName());
传入的是IP地址,则在构建InetAddress时不会去检查DNS。只有当显示的调用了getHostName(),才会完成主机名的DNS查找。
可达性测试
InetAddress类有两个isReachable(),来测试目标地址是否可达。
try{
InetAddress address = InetAddress.getByName("www.xdysite.cn");
if(address.isReachable(2000))
System.out.println("可以连接到该主机");
else
System.out.println("无法连接");
}catch(Exception e){
e.printStackTrace();
}
该方法会使用ICMP echo请求来查看指定地址是否可达。isReachable()的参数是超时时间timeout,单位为毫秒。如果在timeout之内有响应,则返回true,否则返回false。
equals方法
InetAddress类重写了equals方法。如果一个对象本身是InetAddress类的实例,而且与一个InetAddress对象有相同的IP地址,则这两个对象通过equals方法进行判断是相等的。
public static void main(String[] args){
try{
InetAddress address1 = InetAddress.getByName("www.xdysite.cn");
InetAddress address2 = InetAddress.getByName("test.xdysite.cn");
if(address1.equals(address2))
System.out.println("相同");
else
System.out.println("不同");
}catch(Exception e){
e.printStackTrace();
}
}
www.xdysite.cn与test.xdysite.cn指向同一台主机,所以上面的代码运行后会输出相同。
InetAddress类的更多相关文章
- java中Inetaddress类
InetAddress类 InetAddress类用来封装我们前面讨论的数字式的IP地址和该地址的域名. 你通过一个IP主机名与这个类发生作用,IP主机名比它的IP地址用起来更简便更容易理解. Ine ...
- Java基础知识强化之网络编程笔记01:InetAddress类的概述和使用
1. InetAddress类 InetAddress是Java对IP地址的封装,在java.net中有许多类都使用到了InetAddress,包括ServerSocket,Socket,Datagr ...
- InetAddress类的使用
1.1. 简介 IP地址是IP使用的32位(IPv4)或者128位(IPv6)位无符号数字,它是传输层协议TCP,UDP的基础.InetAddress是Java对IP地址的封装,在java.net中有 ...
- Java 网络编程(四) InetAddress类
链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/09/2951895.html Java 网络编程(四) InetAddress类 InetAdd ...
- java中的URL InetAddress类
/* * InetAddress类: * 用于标识网络上的硬件资源,表示互联网协议(ip)地址,是java对ip地址的封装. * 其实例对象包含以数字形式保存的IP地址,主机名. * InetAddr ...
- InetAddress类和InetSocketAddress类
InetAddress 类 封装计算机的 IP 地址,不包含端口号 InetAddress 类常用的方法 1 String getHostAddress() 获得 IP 地址 2 String get ...
- Java知多少(103)网络编程之IP地址和InetAddress类
Java语言的优势之一是Java程序能访问网络资源.Java提供一系列的类支持Java程序访问网络资源. TCP/IP协议和IP地址 为了进行网络通信,通信双方必须遵守通信协议.目前最广泛使用的是TC ...
- IP和java.net.InetAddress类的使用
一.IP 1.地址格式 互联网上每一台计算机都有一个唯一标示自己的标记,这个标记就是IP地址.IP 地址使用32 位长度二进制数据标示,一般在实际中看到的大部分IP地址都是以十进制的数据形式标示的,如 ...
- Java学习---InetAddress类的学习
基础知识 1.InetAddress类 在网络API套接字,InetAddress类和它的子类型对象使用域名DNS系统,处理主机名到主机IPv4或IPv6地址的转换.如图1-1所示. 由于InetAd ...
随机推荐
- HTML5自定义属性之data-*
HTML5 增加了一项新功能是 自定义数据属性 ,也就是 data-* 自定义属性.在HTML5中我们可以使用以 data- 为前缀来设置我们需要的自定义属性,来进行一些数据的存放.当然高级浏览器下 ...
- 天津政府应急系统之GIS一张图(arcgis api for flex)讲解(三)显示地图坐标系模块
config.xml文件的配置如下: <widget left="3" bottom="3" config="widgets/Coordinat ...
- OC笔记一:Objective-C简介
1.OC简介 全称:Objective-C,是扩充C的面向对象编程语言,主要用于iOS和Mac OS开发. C语言的基础上,增加了一层最小的面向对象语法 完全兼容C语言 可以在OC代码中混入C语言代码 ...
- Android开发2:事件处理及实现简单的对话框(Toast,AlertDialog,Snackbar,TextInputLayout的使用)
前言 啦啦啦~又要和大家一起学习Android开发啦,博主心里好激动哒~ 在上篇博文中,我们通过线性布局和基础组件的使用,完成了一个简单的学生课外体育积分电子认证系统的界面,本篇博文,将和大家一起熟悉 ...
- Linux入侵检测常用命令
find / -mtime 0 #0代表目前时间,表示从现在开始到24小时以前,有改动过内容的文件全都会被列出来.如果是3天前24小时内,则使用find / -mtime 3 find /etc -n ...
- 来自沪江、滴滴、蘑菇街架构师的 Docker 实践分享
架构师小组交流会是由国内知名公司架构师参与的技术交流会,每期选择一个时下最热门的技术话题进行实践经验分享. Docker 作为当前最具颠覆性的开源技术之一,其轻量虚拟化.可移植性是 CI/CD.Dev ...
- iOS 最新版 CocoaPods 的安装流程
iOS 最新版 CocoaPods 的安装流程1.移除现有Ruby默认源$gem sources --remove https://rubygems.org/2.使用新的源$gem sources - ...
- [css]我要用css画幅画(七) - 哆啦A梦
接着之前的[css]我要用css画幅画(六),今天画的有所不同,画的是哆啦A梦,我们小时候对他的称呼其实是小叮当机器猫. (PS:这次我要做的事情,很多人已经做过,这并不是什么创新,我只是在学习并记录 ...
- Oracle RAMN 备份解决方案一例
以前在博客里面介绍了RMAN备份脚本一列分享,通过RMAN备份到本地路径,然后通过FTP将备份文件上传到FTP服务器. 下面简单介绍另外一例RMAN备份解决方案,下面是我简单画的一个图(很少画图,感觉 ...
- ZooKeeper:Quick Start
下载.安装与配置 下载地址 安装 配置 ZooKeeper bin目录下脚本说明 Server 启动.停止 客户端操作 使用简易客户端访问 使用Java客户端访问 使用开源客户端ZkClient访问 ...