Java网络编程从入门到精通(9):使用isXxx方法判断地址类型

IP地址分为普通地址和特殊地址。在前面的文章中所使用的大多数都是普通的IP地址,在本文中将介绍如何利用InetAddress类提供的十个方法来确定一个IP地址是否是一个特殊的IP地址。

一、isAnyLocalAddress方法

当IP地址是通配符地址时返回true,否则返回false.这个通配符地址对于拥有多个网络接口(如两块网卡)的计算机非常拥有。使用通配符地址可以允许在服务器主机接受来自任何网络接口的客户端连接。IPv4的通配符地址是0.0.0.0.IPv6的通配符地址是0:0:0:0:0:0:0:0,也可以简写成::。

二、isLoopbackAddress方法

当IP地址是loopback地址时返回true,否则返回false.loopback地址就是代表本机的IP地址。IPv4的loopback地址的范围是127.0.0.0 ~ 127.255.255.255,也就是说,只要第一个字节是127,就是lookback地址。如127.1.2.3、127.0.200.200都是loopback地址。IPv6的loopback地址是0:0:0:0:0:0:0:1,也可以简写成::1.我们可以使用ping命令来测试lookback地址。如下面的命令行所示:

ping 127.200.200.200

运行结果:

Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128

Ping statistics for 127.200.200.200:
         Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
         Minimum = 0ms, Maximum = 0ms, Average = 0ms

虽然127.255.255.255也是loopback地址,但127.255.255.255在Windows下是无法ping通的。这是因为127.255.255.255是广播地址,在Windows下对发给广播地址的请求不做任何响应,而在其他操作系统上根据设置的不同,可能会得到不同的结果。

三、isLinkLocalAddress方法

当IP地址是本地连接地址(LinkLocalAddress)时返回true,否则返回false.IPv4的本地连接地址的范围是169.254.0.0 ~ 169.254.255.255.IPv6的本地连接地址的前12位是FE8,其他的位可以是任意取值,如FE88::、FE80::ABCD::都是本地连接地址。

四、isSiteLocalAddress方法

当IP地址是地区本地地址(SiteLocalAddress)时返回true,否则返回false.IPv4的地址本地地址分为三段:10.0.0.0 ~ 10.255.255.255、172.16.0.0 ~ 172.31.255.255、192.168.0.0 ~ 192.168.255.255.IPv6的地区本地地址的前12位是FEC,其他的位可以是任意取值,如FED0::、FEF1::都是地区本地地址。

五、isMulticastAddress方法

当IP地址是广播地址(MulticastAddress)时返回true,否则返回false.通过广播地址可以向网络中的所有计算机发送信息,而不是只向一台特定的计算机发送信息。IPv4的广播地址的范围是224.0.0.0 ~ 239.255.255.255.IPv6的广播地址第一个字节是FF,其他的字节可以是任意值。关于广播地址的详细内容将在以后的章节中讨论。

六、isMCGlobal方法

当IP地址是全球范围的广播地址时返回true,否则返回false.全球范围的广播地址可以向Internet中的所有的计算机发送信息。IPv4的广播地址除了224.0.0.0和第一个字节是239的IP地址都是全球范围的广播地址。IPv6的全球范围的广播地址中第一个字节是FF,第二个字节的范围是0E ~ FE,其他的字节可以是任意值,如FFBE::、FF0E::都是全球范围的广播地址。

时间: 2025-01-21 10:50:33

Java网络编程从入门到精通(9):使用isXxx方法判断地址类型的相关文章

Java网络编程从入门到精通(1):Internet地址概述

所有连入Internet的终端设备(包括计算机.PDA.打印机以及其他的电子设备)都有一个唯一的索引,这个索引被称为IP地址.现在Internet上的IP地址大多由四个字节组成,这种IP地址叫做IPv4.除了这种由四个字节组成的IP,在Internet上还存在一种IP,这种IP由16个字节组成,叫做IPv6.IPv4和IPv6后面的数字是Internet协议(Internet Protocol,IP)的版本号. IPv4地址的一般表现形式为:X.X.X.X.其中X为0到255的整数.这四个整数用

Java网络编程从入门到精通

Hibernate从入门到精通(十一)多对多双向关联映射 Hibernate从入门到精通(十)多对多单向关联映射 Hibernate从入门到精通(九)一对多双向关联映射 Hibernate从入门到精通(八)一对多单向关联映射 Hibernate从入门到精通(七)多对一单向关联映射 Hibernate从入门到精通(六)一对一双向关联映射 Hibernate从入门到精通(五)一对一单向关联映射 Hibernate从入门到精通(四)基本映射 Hibernate从入门到精通(三)Hibernate配置文

Java网络编程从入门到精通(34)

Java网络编程从入门到精通(34):读写缓冲区中的数据---使用get和put方法按顺序读写单个数据 对于缓冲区来说,最重要的操作就是读写操作.缓冲区提供了两种方法来读写缓冲区中的数据:get.put方法和array方法.而get.put方法可以有三种读写数据的方式:按顺序读写单个数据.在指定位置读写单个数据和读写数据块.除了上述的几种读写数据的方法外,CharBuffer类还提供了用于专门写字符串的put和append方法.在本文及后面的文章中将分别介绍这些读写缓冲区的方法. 虽然使用all

Java网络编程从入门到精通 (9):使用isXxx方法判断地址类型

本文为原创,如需转载,请注明作者和出处,谢谢! 上一篇:Java网络编程从入门到精通(8):用getAddress方法获得IP地址     IP地址分为普通地址和特殊地址.在前面的文章中所使用的大多数都是普通的IP地址,在本文中将介绍如何利用InetAddress类提供的十个方法来确定一个IP地址是否是一个特殊的IP地址. 一.isAnyLocalAddress方法     当IP地址是通配符地址时返回true,否则返回false.这个通配符地址对于拥有多个网络接口(如两块网卡)的计算机非常拥有

Java网络编程从入门到精通(34):读写缓冲区中的数据---使用get和put方法按顺序读写单个数据

本文为原创,如需转载,请注明作者和出处,谢谢! 上一篇:Java网络编程从入门到精通(33):非阻塞I/O的缓冲区(Buffer)     对于缓冲区来说,最重要的操作就是读写操作.缓冲区提供了两种方法来读写缓冲区中的数据:get.put方法和array方法.而get.put方法可以有三种读写数据的方式:按顺序读写单个数据.在指定位置读写单个数据和读写数据块.除了上述的几种读写数据的方法外,CharBuffer类还提供了用于专门写字符串的put和append方法.在本文及后面的文章中将分别介绍这

Java网络编程从入门到精通(27):关闭服务端连接

在客户端和服务端的数据交互完成后,一般需要关闭网络连接.对于服务端来说,需要关闭Socket和ServerSocket. 在关闭Socket后,客户端并不会马上感知自已的Socket已经关闭,也就是说,在服务端的Socket关闭后,客户端的Socket的isClosed和isConnected方法仍然会分别得到false和true.但对已关闭的Socket的输入输出流进行操作会抛出一个SocketException异常. 在关闭服务端的ServerSocket后,ServerSocket对象所绑

Java网络编程从入门到精通(17):Socket类的getter和setter方法(1)

在Java类中,getter和setter方法占了很大的比重.由于Java中没有定义属性的关键字:因此,getter和setter方法用于获得和设置Java类的属性值:如getName和setName方法用于设置name属性的值.如果某个属性只有getter方法,那这个属性是只读的:如果只有setter方法,那么这个属性是只写的.在Socket类中也有很多这样的属性来获得和Socket相关的信息,以及对Socket对象的状态进行设置. 一.用于获得信息的getter方法 我们可以从Socket对

Java网络编程从入门到精通(32):一个非阻塞I/O的例子

为了使读者更好地理解非阻塞I/O,本节给出了一个简单的例子用来演示如何将非阻塞I/O应用到网络程序中.读者可以先不必管这个例子的具体细节.因为这个例子的主要目的并不是讲解非阻塞I/O的使用,而是先让读者对非阻塞I/O有一个笼统的感性认识.在看完这个例子后,读者可能会有很多疑问,在本章后面的部分将会逐渐揭开这些迷团.这个例子的主要功能是访问新浪网,并将新浪网的首页在控制台上输出. package test; import java.net.*; import java.nio.*; import

Java网络编程从入门到精通(31):非阻塞I/O简介

在网络应用中,一般可以采用同步I/O(阻塞I/O)和非阻塞I/O两种方式进行数据通讯.这两种方式并非互相排斥和互相取代.我们可以在平时的应用中单独采用其中一种通讯方式,也可以混合使用这两种通讯方式.在本文中就什么是非阻塞I/O以及为什么要使用这种通讯方式进行了介绍,在下一篇文章中给出了一个简单的例子来演示在网络应用中如何使用非阻塞I/O进行通讯. 一.什么是非阻塞I/O 我们可以将同步I/O称为阻塞I/O,非阻塞I/O称为异步I/O.在本书中采用了比较常用的叫法:同步I/O和非阻塞I/O.虽然它

Java网络编程从入门到精通(25):创建ServerSocket对象

ServerSocket类的构造方法有四种重载形式,它们的定义如下: public ServerSocket() throws IOException public ServerSocket(int port) throws IOException public ServerSocket(int port, int backlog) throws IOException public ServerSocket(int port, int backlog, InetAddress bindAddr