Dmi*_*try 34 java ip networking mask cidr
给定CIDR地址,例如 192.168.10.0/24
24)255.255.255.0)192.168.10.0)小智 60
它由apache utils覆盖.
请参阅此URL:http://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/util/SubnetUtils.html
String subnet = "192.168.0.3/31";
SubnetUtils utils = new SubnetUtils(subnet);
utils.getInfo().isInRange(address)
Run Code Online (Sandbox Code Playgroud)
注意:对于使用w// 32 CIDR子网,例如,需要添加以下声明:
utils.setInclusiveHostCount(true);
Run Code Online (Sandbox Code Playgroud)
ZZ *_*der 27
这就是你在Java中的表现,
String[] parts = addr.split("/");
String ip = parts[0];
int prefix;
if (parts.length < 2) {
prefix = 0;
} else {
prefix = Integer.parseInt(parts[1]);
}
int mask = 0xffffffff << (32 - prefix);
System.out.println("Prefix=" + prefix);
System.out.println("Address=" + ip);
int value = mask;
byte[] bytes = new byte[]{
(byte)(value >>> 24), (byte)(value >> 16 & 0xff), (byte)(value >> 8 & 0xff), (byte)(value & 0xff) };
InetAddress netAddr = InetAddress.getByAddress(bytes);
System.out.println("Mask=" + netAddr.getHostAddress());
Run Code Online (Sandbox Code Playgroud)
根据Yuriy的回答:为了获得所有ip地址,Apache Java类SubnetUtils提供了以下方法:
String[] addresses = utils.getInfo().getAllAddresses();
Run Code Online (Sandbox Code Playgroud)
要下载包含该类的jar,请访问:http: //repo1.maven.org/maven2/commons-net/commons-net/3.0.1/commons-net-3.0.1.jar
Maven id:
<groupId>commons-net<groupId> <artifactId>commons-net<artifactId> <version>3.0.1<version>
IPAddress Java库以多态方式支持IPv4和IPv6,包括子网.链接中提供了javadoc.免责声明:我是项目经理.
您列出的所有用例都透明地支持IPv4和Ipv6.
String str = "192.168.10.0/24";
IPAddressString addrString = new IPAddressString(str);
try {
IPAddress addr = addrString.toAddress();
Integer prefix = addr.getNetworkPrefixLength(); //24
IPAddress mask = addr.getNetwork().getNetworkMask(prefix, false);//255.255.255.0
IPAddress networkAddr = addr.mask(mask); //192.168.10.0
IPAddress networkAddrOtherWay = addr.getLower().removePrefixLength(); //192.168.10.0
...
} catch(AddressStringException e) {
//e.getMessage provides validation issue
}
Run Code Online (Sandbox Code Playgroud)
Linux命令行ipcalc。您可以快速使用:
$ipcalc 192.168.10.0/24
Address: 192.168.10.0 11000000.10101000.00001010. 00000000
Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000
Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111
=>
Network: 192.168.10.0/24 11000000.10101000.00001010. 00000000
HostMin: 192.168.10.1 11000000.10101000.00001010. 00000001
HostMax: 192.168.10.254 11000000.10101000.00001010. 11111110
Broadcast: 192.168.10.255 11000000.10101000.00001010. 11111111
Hosts/Net: 254 Class C, Private Internet
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60426 次 |
| 最近记录: |