IPアドレスが特定のサブネットにあるかどうかを確認するライブラリはありますか?私はApache Commons SubnetUtils(SubnetUtils.SubnetInfo.isInRange)のようなライブラリを見つけることができましたが、多くはまだIPv6をサポートしていません。JavaライブラリでIPv4またはIPv6アドレスが特定のサブネットにあるかどうかを確認する
10
A
答えて
8
edazdarevic's CIDRUtilsは、IPv4とIPv6の両方をサポートします。この例ではboolean isInRange(String ipAddress)については言及していませんが、実装されています!
もう1つのオプションはjava-ipv6ですが、IPv4とrequires JDK7はサポートしていません。
1
The IPAddress Java libraryは、多態的にIPv4とIPv6の両方をサポートし、サブネット内のアドレスまたはサブネットの包含をチェックするメソッドを含むサブネットをサポートします。 javadocはリンクから入手できます。
ここでは、問題を解決するsample codeがあります。この問題は、IPv4またはIPv6と同じように機能します。
1
春のIpAddressMatcherを使用してください。 Apache Commons Netとは異なり、ipv4とipv6の両方をサポートしています。
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);
}
ヒント:あなたが春を使用していないとあなたが迅速な軽量なソリューションを必要とする場合でも、あなたはまだsource codeに非常に少しの変更(インタフェースを削除する)と、このクラスを使用することができます。 (このアプローチは、および/またはあなたが違反している場合、重大なプロジェクトのために推奨されるものではないが、そのlicense!)
1
commons-ip-mathは、IPv4およびIPv6アドレスの両方をサポートしています。
Ipv4Range.parse("192.168.0.0/24").contains(Ipv4.parse("10.0.0.1"))
// false
Ipv6Range.parse("2001:db8::/32").contains(Ipv6.parse("2001:db8::4"))
// true
(免責事項、私はコモンズ-IP-数学のメンテナの一人です)に
関連する問題
- 1. IPアドレスが特定のサブネット内にあるかどうかを確認する方法
- 2. JavaにIPv4のIPv6アドレスを報告するようにする
- 3. AndroidのIPv4アドレスからIPv4マップされたIPv6アドレスを合成しますか?
- 4. IPv4、IPv6、ホスト名を確認する
- 5. nodejs expressjsでipv6アドレスをipv4アドレスに変換する方法は?
- 6. 誰かがIPv6/IPv4経由で接続しているかどうかを確認する方法
- 7. IPv6アドレスはIPv4モードで動作しますか?
- 8. 特定のXULElementにフォーカスがあるかどうかを確認するには
- 9. セルに有効なIPv6アドレスが含まれているかどうかを確認する方法は?
- 10. JavaScriptあるIPv6アドレスが別のIPv6アドレスより大きいかどうかをテストする方法は?
- 11. アドレスが共有メモリにあるかどうかを確認できますか?
- 12. ipv4アドレスをipv6に変換するにはAFNetworkingを使用しますか?
- 13. NSStringに特定のアドレスのURLがあるかどうかを確認する方法
- 14. アドレスが2つのアドレスの間にあるかどうかを確認
- 15. awsでサブネットipv4 cidrアドレスを調べる方法は?
- 16. PHPを使用してIPv4/IPv6アドレスがアップしているか確認してください
- 17. 特定の型がアクションデリゲートであるかどうかを確認する
- 18. 特定のユーザーにロールがあるかどうかを確認する
- 19. 特定の領域にスプライトがあるかどうかを確認する-AndEngine
- 20. 値に特定のテキストがあるかどうかを確認する方法
- 21. ping win2k16は、IPv4の代わりにIPv6アドレスを返します。
- 22. ethereumアドレスが有効かどうかを確認するには?
- 23. NSTableViewの特定のビューにマウスがあるかどうかを確認する方法はありますか?
- 24. PHPでIPv6をIPv4アドレスに変換する
- 25. Pythonで特定のキーが押されたかどうかを確認する方法はありますか?
- 26. 文字列がC#で有効なIPv4またはIPv6アドレスであるかどうかを調べる方法は?
- 27. コントローラが特定の「コントローラグループ」の一部であるかどうかを確認
- 28. 構造体に特定の型のメンバーがあるかどうかを確認
- 29. Golangは - IPアドレスがネットワーク内にあるかどうかを確認
- 30. JVMでどのオブジェクトが特定の世代にあるのか、どのように確認できますか?
コモンズネット機能要求:ここではIPアドレスが与えられたサブネットにあるかどうかをチェックすることができますどのように投票:https://issues.apache.org/jira/browse/NET-405 – Vadzim