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. IPv4、IPv6、ホスト名を確認する
- 3. 誰かがIPv6/IPv4経由で接続しているかどうかを確認する方法
- 4. 特定のXULElementにフォーカスがあるかどうかを確認するには
- 5. アドレスが2つのアドレスの間にあるかどうかを確認
- 6. 特定の型がアクションデリゲートであるかどうかを確認する
- 7. 特定の領域にスプライトがあるかどうかを確認する-AndEngine
- 8. 特定のユーザーにロールがあるかどうかを確認する
- 9. NSTableViewの特定のビューにマウスがあるかどうかを確認する方法はありますか?
- 10. 文字列がC#で有効なIPv4またはIPv6アドレスであるかどうかを調べる方法は?
- 11. Pythonで特定のキーが押されたかどうかを確認する方法はありますか?
- 12. ホストIPV4とIPV6アドレスを読み取るバッチファイルが必要
- 13. コントローラが特定の「コントローラグループ」の一部であるかどうかを確認
- 14. 構造体に特定の型のメンバーがあるかどうかを確認
- 15. MySQLデータベース(IPv4とIPv6)にIPアドレスを格納しています
- 16. JVMでどのオブジェクトが特定の世代にあるのか、どのように確認できますか?
- 17. ipv4とipv6のアドレスを区別する方法
- 18. 特定のユーザーがツイートしたかどうかを確認
- 19. 特定の要素がクリックされたかどうかを確認する方法はありますか?
- 20. ipv4とipv6は何ですか?
- 21. IPv4アドレスとIPv6アドレスは一致しますが、ホスト名は一致しませんか?
- 22. Rails 3のクイックルックアップのためにIPv4とIPv6のIPアドレスを記録するためのモデルを作成するにはどうしたらいいですか?
- 23. 特定のNSStringがNSArrayに存在するかどうかをどのように確認できますか?
- 24. 特定のリンクが有効かどうかを確認するには?
- 25. IPアドレスが特定のネットワーク/ネットマスクのものかどうかを確認するJavaコンポーネントは誰にも分かりますか?
- 26. IPv6が利用可能かどうかを確認する最良の方法
- 27. マウスポインタが特定のクラスにあるかどうかを確認できますか?
- 28. アドレスがヒープまたはスタックまたはレジスタに属しているかどうかを確認する
- 29. 数字が特定の範囲にあるかどうかを確認するためのビットツイディリング
- 30. Java EEシングルトンがビジーであるかどうかを確認する方法は?
コモンズネット機能要求:ここではIPアドレスが与えられたサブネットにあるかどうかをチェックすることができますどのように投票:https://issues.apache.org/jira/browse/NET-405 – Vadzim