Bana verilen IP adresi i otomatik doğrulaması gerekir bazı özel ağdan olup olmadığını belirlemek gerekir.kimse IP adresi belirli bir ağ/ağ maskesi dan ise bir java bileşeni kontrol etmek biliyor mu?
cevap
Jakarta Commons Net ihtiyaçlarını karşılamak görünüyor org.apache.commons.net.util.SubnetUtils
sahiptir.
SubnetInfo subnet = (new SubnetUtils("10.10.10.0", "255.255.255.128")).getInfo();
boolean test = subnet.isInRange("10.10.10.10");
Not carson işaret olarak Jakarta Commons Net bazı durumlarda doğru cevabı vererek önler a bug sahip olduğunu,: Eğer böyle bir şey yapmak gibi görünüyor. Carson bu hatayı önlemek için SVN sürümünü kullanıyor önerir.
Ayrıca
boolean inSubnet = (ip^subnet) & netmask == 0;
Ip ve netmask ints veya longs var mı? – simgineer
32 bit adresler, IPv4, ints'dir. IPv6'nın 64 bitlik değerler olduğundan şüpheleniyorum ama kendimi kullanmam. –
Kullanım Bahar en IpAddressMatcher
boolean inSubnet = (ip & netmask) == (subnet & netmask);
veya daha kısa deneyebilirsiniz. Apache Commons Net aksine, IPv4 hem de IPv6 destekler.
import org.springframework.security.web.util.matcher.IpAddressMatcher;
...
private void checkIpMatch() {
matches("192.168.2.1", "192.168.2.1"); // true
matches("192.168.2.1", "192.168.2.0/32"); // false
matches("192.168.2.5", "192.168.2.0/24"); // true
matches("92.168.2.1", "fe80:0:0:0:0:0:c0a8:1/120"); // false
matches("fe80:0:0:0:0:0:c0a8:11", "fe80:0:0:0:0:0:c0a8:1/120"); // true
matches("fe80:0:0:0:0:0:c0a8:11", "fe80:0:0:0:0:0:c0a8:1/128"); // false
matches("fe80:0:0:0:0:0:c0a8:11", "192.168.2.0/32"); // false
}
private boolean matches(String ip, String subnet) {
IpAddressMatcher ipAddressMatcher = new IpAddressMatcher(subnet);
return ipAddressMatcher.matches(ip);
}
Kaynak: here
bir alt An IP'yi kontrol etmek için, ben SubnetUtils sınıfta isInRange yöntemini kullandı. Ama bu yöntem alt ağ X, X daha düşük, return true isInRange her IP adresi ise bir hata var. Örneğin, alt ağınız 10.10.30.0/24 ise ve 10.10.20.5'i kontrol etmek istiyorsanız, bu yöntem doğrudur. Bu hatayı ele almak için kodun altında kullandım.
public static void main(String[] args){
String list = "10.10.20.0/24";
String IP1 = "10.10.20.5";
String IP2 = "10.10.30.5";
SubnetUtils subnet = new SubnetUtils(list);
SubnetUtils.SubnetInfo subnetInfo = subnet.getInfo();
if(MyisInRange(subnetInfo , IP1) == true)
System.out.println("True");
else
System.out.println("False");
if(MyisInRange(subnetInfo , IP2) == true)
System.out.println("True");
else
System.out.println("False");
}
private boolean MyisInRange(SubnetUtils.SubnetInfo info, String Addr)
{
int address = info.asInteger(Addr);
int low = info.asInteger(info.getLowAddress());
int high = info.asInteger(info.getHighAddress());
return low <= address && address <= high;
}
- 1. IP Adresi sk_buff dan
- 2. Go/GoLang kontrol IP adresi menzil içinde
- 3. Birisi Java için bir posta (SMTP) yayın kitaplığını biliyor mu?
- 4. kimse bu oluşturulma biçimini biliyor mu veri görselleştirme
- 5. flot kimse damgası dayanan Flot tarih gösterilecek biliyor mu damgası
- 6. IP adresi ':: 1' nedir?
- 7. IP adresi bir String'den alın (Groovy)
- 8. Bir konsol uygulamasında IP adresi alın
- 9. IP adresi dizesini Python
- 10. Silverlight IP adresi
- 11. Genymotion IP adresi alamıyorum
- 12. İstemci IP adresi
- 13. Kullanıcının IP Adresi .net?
- 14. Bir IP adresinin Java
- 15. IPhone WiFi Alt Ağ Maskesi ve Router Adresi
- 16. Intel Chipset kimse erişimi için bir program yazmaya başlamak için nasıl biliyor mu
- 17. CPU, belirli bir fiziksel bellek adresini nerede arayacağını biliyor?
- 18. Bir WindowMediaPlayer activeX'te WMV nasıl flash bileşeni tarafından kontrol edilir?
- 19. Kontrol iPad sessiz modda ise
- 20. heroku uygulamasının IP adresi nedir
- 21. PHP ekran sunucusu IP Adresi
- 22. cloudfront İmzalı urls ip adresi
- 23. cPanel IP adresi değiştiğinden açılmıyor.
- 24. IP adresi nasıl doğrulanır? C#
- 25. JWS bir web hizmeti denir ip adresi alınıyor
- 26. Doğru IP adresi nasıl okunur?
- 27. Android cihazın LAN ip adresi nasıl bulunur?
- 28. argümanıKindOfClass: [NSNumber sınıfı] - Bunu kontrol etmek için bir yol mu?
- 29. kimse REGEX "\ b", MYSQL çalışmadığını buldu mu?
- 30. Java'da Ana Makine Adı İçin IP Adresi?
Bunu kullanırken dikkatli olun. Onu düzgün çalışmasını engelleyen bir hata var. SVN'den çıkarmak isteyebilirsiniz. http://mail-archives.apache.org/mod_mbox/commons-issues/200902.mbox/%[email protected]%3E – carson
@carson: Uyarı için teşekkürler. Bu bilgileri eklemek için cevabımı düzenledim. – Eddie