The IPAddress Java library hỗ trợ cả IPv4 và IPv6 một cách đa hình bao gồm mạng con. Javadoc có sẵn tại liên kết. Disclaimer: Tôi là người quản lý dự án.
Tất cả các trường hợp sử dụng mà bạn liệt kê đều được hỗ trợ cho cả IPv4 và Ipv6 một cách minh bạch. Nói cách khác, nó khác với hầu hết các tiện ích khác theo nghĩa là mã bên dưới hoạt động giống với IPv4 hoặc IPv6 làm các chuỗi đầu vào.
Xác minh nếu một địa chỉ có giá trị
String str = "::1";
IPAddressString addrString = new IPAddressString(str);
try {
IPAddress addr = addrString.toAddress();
...
} catch(IPAddressStringException e) {
//e.getMessage provides validation issue
}
Return nếu địa chỉ được chứa trong một subnet
String str = "1::1";
String subnetStr = "1::/64";
IPAddressString addrString = new IPAddressString(str);
IPAddressString subnetString = new IPAddressString(subnetStr);
try {
IPAddress addr = addrString.toAddress();
IPAddress subnet = subnetString.toAddress();
boolean isContained = subnet.contains(addr); //true in this case
...
} catch(IPAddressStringException e) {
//e.getMessage provides validation issue
}
Return địa chỉ quảng bá cho một subnet cho
String subnet = "127.0.0.0/28";
IPAddressString subnetString = new IPAddressString(subnet);
try {
IPAddress subnet = subnetString.toAddress();
IPAddress broadcastAddr = subnet.getHighest();
...
} catch(IPAddressStringException e) {
//e.getMessage provides validation issue
}
Return một danh sách địa chỉ cho mạng con theo thứ tự
String subnet = "127.0.0.0/28";
IPAddressString subnetString = new IPAddressString(subnet);
try {
IPAddress subnet = subnetString.toAddress();
for(IPAddress addr : subnet) {
...
}
} catch(IPAddressStringException e) {
//e.getMessage provides validation issue
}
Sắp xếp một danh sách địa chỉ
List<IPAddressString> addrs;
Collections.sort(addrs); //IPAddressString implements Comparable
Nhận đặt mạng mạng cấp và danh sách địa chỉ (để đáp ứng AhmedRana):
IPAddress subnet = new IPAddressString("192.168.0.0/28").getAddress();
IPAddress newSubnets = subnet.setPrefixLength(subnet.getPrefixLength() + 1, false);
System.out.println(newSubnets); //192.168.0.0-8/29
HashSet<IPAddress> subnetSet = new HashSet<IPAddress>();
ArrayList<IPAddress> addrList = new ArrayList<IPAddress>();
for(IPAddress addr : newSubnets.getIterable()) {
subnetSet.add(addr.toPrefixBlock());
addrList.add(addr);
}
System.out.println(subnetSet);//[192.168.0.0/29, 192.168.0.8/29]
System.out.println(addrList);
//[192.168.0.0/29, 192.168.0.1/29, 192.168.0.2/29,
//192.168.0.3/29, 192.168.0.4/29, 192.168.0.5/29,
//192.168.0.6/29, 192.168.0.7/29, 192.168.0.8/29,
//192.168.0.9/29, 192.168.0.10/29, 192.168.0.11/29,
//192.168.0.12/29, 192.168.0.13/29, 192.168.0.14/29,
//192.168.0.15/29]
Cảm ơn cho đăng câu trả lời của bạn! Vui lòng đảm bảo đọc kỹ [FAQ on Self-Promotion] (http://stackoverflow.com/faq#promotion). Cũng lưu ý rằng nó là * bắt buộc * mà bạn đăng tuyên bố từ chối trách nhiệm mỗi lần bạn liên kết đến trang web/sản phẩm của riêng bạn. –
@AndrewBarber Cảm ơn. Tôi đã không nhận thức được điều này. Tôi chỉ cố gắng giúp những người khác có cùng vấn đề với tôi. Dù sao, tôi sẽ từ chối trách nhiệm. –