/*
* Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package java.net;
This class represents a Network Interface address. In short it's an
IP address, a subnet mask and a broadcast address when the address is
an IPv4 one. An IP address and a network prefix length in the case
of IPv6 address.
See Also: - NetworkInterface
Since: 1.6
/**
* This class represents a Network Interface address. In short it's an
* IP address, a subnet mask and a broadcast address when the address is
* an IPv4 one. An IP address and a network prefix length in the case
* of IPv6 address.
*
* @see java.net.NetworkInterface
* @since 1.6
*/
public class InterfaceAddress {
private InetAddress address = null;
private Inet4Address broadcast = null;
private short maskLength = 0;
/*
* Package private constructor. Can't be built directly, instances are
* obtained through the NetworkInterface class.
*/
InterfaceAddress() {
}
Returns an InetAddress
for this address.
Returns: the InetAddress
for this address.
/**
* Returns an <code>InetAddress</code> for this address.
*
* @return the <code>InetAddress</code> for this address.
*/
public InetAddress getAddress() {
return address;
}
Returns an InetAddress
for the brodcast address
for this InterfaceAddress.
Only IPv4 networks have broadcast address therefore, in the case
of an IPv6 network, null
will be returned.
Returns: the InetAddress
representing the broadcast
address or null
if there is no broadcast address.
/**
* Returns an <code>InetAddress</code> for the brodcast address
* for this InterfaceAddress.
* <p>
* Only IPv4 networks have broadcast address therefore, in the case
* of an IPv6 network, <code>null</code> will be returned.
*
* @return the <code>InetAddress</code> representing the broadcast
* address or <code>null</code> if there is no broadcast address.
*/
public InetAddress getBroadcast() {
return broadcast;
}
Returns the network prefix length for this address. This is also known
as the subnet mask in the context of IPv4 addresses.
Typical IPv4 values would be 8 (255.0.0.0), 16 (255.255.0.0)
or 24 (255.255.255.0).
Typical IPv6 values would be 128 (::1/128) or 10 (fe80::203:baff:fe27:1243/10)
Returns: a short
representing the prefix length for the
subnet of that address.
/**
* Returns the network prefix length for this address. This is also known
* as the subnet mask in the context of IPv4 addresses.
* Typical IPv4 values would be 8 (255.0.0.0), 16 (255.255.0.0)
* or 24 (255.255.255.0). <p>
* Typical IPv6 values would be 128 (::1/128) or 10 (fe80::203:baff:fe27:1243/10)
*
* @return a <code>short</code> representing the prefix length for the
* subnet of that address.
*/
public short getNetworkPrefixLength() {
return maskLength;
}
Compares this object against the specified object.
The result is true
if and only if the argument is
not null
and it represents the same interface address as
this object.
Two instances of InterfaceAddress
represent the same
address if the InetAddress, the prefix length and the broadcast are
the same for both.
Params: - obj – the object to compare against.
See Also: Returns: true
if the objects are the same;
false
otherwise.
/**
* Compares this object against the specified object.
* The result is <code>true</code> if and only if the argument is
* not <code>null</code> and it represents the same interface address as
* this object.
* <p>
* Two instances of <code>InterfaceAddress</code> represent the same
* address if the InetAddress, the prefix length and the broadcast are
* the same for both.
*
* @param obj the object to compare against.
* @return <code>true</code> if the objects are the same;
* <code>false</code> otherwise.
* @see java.net.InterfaceAddress#hashCode()
*/
public boolean equals(Object obj) {
if (!(obj instanceof InterfaceAddress)) {
return false;
}
InterfaceAddress cmp = (InterfaceAddress) obj;
if ((address != null & cmp.address == null) ||
(!address.equals(cmp.address)))
return false;
if ((broadcast != null & cmp.broadcast == null) ||
(!broadcast.equals(cmp.broadcast)))
return false;
if (maskLength != cmp.maskLength)
return false;
return true;
}
Returns a hashcode for this Interface address.
Returns: a hash code value for this Interface address.
/**
* Returns a hashcode for this Interface address.
*
* @return a hash code value for this Interface address.
*/
public int hashCode() {
return address.hashCode() + ((broadcast != null) ? broadcast.hashCode() : 0) + maskLength;
}
Converts this Interface address to a String
. The
string returned is of the form: InetAddress / prefix length [ broadcast address ].
Returns: a string representation of this Interface address.
/**
* Converts this Interface address to a <code>String</code>. The
* string returned is of the form: InetAddress / prefix length [ broadcast address ].
*
* @return a string representation of this Interface address.
*/
public String toString() {
return address + "/" + maskLength + " [" + broadcast + "]";
}
}