⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reversemap.java

📁 linux下建立JAVA虚拟机的源码KAFFE
💻 JAVA
字号:
// Copyright (c) 2003-2004 Brian Wellington (bwelling@xbill.org)package org.xbill.DNS;import java.net.*;/** * A set functions designed to deal with DNS names used in reverse mappings. * For the IPv4 address a.b.c.d, the reverse map name is d.c.b.a.in-addr.arpa. * For an IPv6 address, the reverse map name is ...ip6.arpa. * * @author Brian Wellington */public final class ReverseMap {private static Name inaddr4 = Name.fromConstantString("in-addr.arpa.");private static Name inaddr6 = Name.fromConstantString("ip6.arpa.");/* Otherwise the class could be instantiated */privateReverseMap() {}/** * Creates a reverse map name corresponding to an address contained in * an array of 4 bytes (for an IPv4 address) or 16 bytes (for an IPv6 address). * @param addr The address from which to build a name. * @return The name corresponding to the address in the reverse map. */public static NamefromAddress(byte [] addr) {	if (addr.length != 4 && addr.length != 16)		throw new IllegalArgumentException("array must contain " +						   "4 or 16 elements");	StringBuffer sb = new StringBuffer();	if (addr.length == 4) {		for (int i = addr.length - 1; i >= 0; i--) {			sb.append(addr[i] & 0xFF);			if (i > 0)				sb.append(".");		}	} else {		int [] nibbles = new int[2];		for (int i = addr.length - 1; i >= 0; i--) {			nibbles[0] = (addr[i] & 0xFF) >> 4;			nibbles[1] = (addr[i] & 0xFF) & 0xF;			for (int j = nibbles.length - 1; j >= 0; j--) {				sb.append(Integer.toHexString(nibbles[j]));				if (i > 0 || j > 0)					sb.append(".");			}		}	}	try {		if (addr.length == 4)			return Name.fromString(sb.toString(), inaddr4);		else			return Name.fromString(sb.toString(), inaddr6);	}	catch (TextParseException e) {		throw new IllegalStateException("name cannot be invalid");	}}/** * Creates a reverse map name corresponding to an address contained in * an array of 4 integers between 0 and 255 (for an IPv4 address) or 16 * integers between 0 and 255 (for an IPv6 address). * @param addr The address from which to build a name. * @return The name corresponding to the address in the reverse map. */public static NamefromAddress(int [] addr) {	byte [] bytes = new byte[addr.length];	for (int i = 0; i < addr.length; i++) {		if (addr[i] < 0 || addr[i] > 0xFF)			throw new IllegalArgumentException("array must " +							   "contain values " +							   "between 0 and 255");		bytes[i] = (byte) addr[i];	}	return fromAddress(bytes);}/** * Creates a reverse map name corresponding to an address contained in * an InetAddress. * @param addr The address from which to build a name. * @return The name corresponding to the address in the reverse map. */public static NamefromAddress(InetAddress addr) {	return fromAddress(addr.getAddress());}/** * Creates a reverse map name corresponding to an address contained in * a String. * @param addr The address from which to build a name. * @return The name corresponding to the address in the reverse map. * @throws UnknownHostException The string does not contain a valid address. */public static NamefromAddress(String addr, int family) throws UnknownHostException {	byte [] array = Address.toByteArray(addr, family);	if (array == null)		throw new UnknownHostException("Invalid IP address");	return fromAddress(array);}/** * Creates a reverse map name corresponding to an address contained in * a String. * @param addr The address from which to build a name. * @return The name corresponding to the address in the reverse map. * @throws UnknownHostException The string does not contain a valid address. */public static NamefromAddress(String addr) throws UnknownHostException {	return fromAddress(addr, Address.IPv4);}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -