2

IP アドレスの範囲を格納するために推奨されるデータ型は?

たとえば、

"IP1":["12.21.31.0/24"],
"IP2":["13.96.210.122/28","12.33.116.17/21"]

データは JSON 形式です。この JSON 情報を解析する Java オブジェクトがあります。Javaクラスでどのデータ型を使用すればよいかわかりません。提案してください。

4

2 に答える 2

3

InetAddress クラスは、理想的なタイプ ストアの IP アドレスです。それはあなたがここで求めた以上のものです。ただし、名前/アドレスから IP を取得する場合や、その逆の場合に役立ちます。

INetAddress でサポートされていない CIDR マスクを使用しているため、他のタイプが必要になります

Apache SubnetUtilsを使用したコード サンプル

String subnet = "12.21.31.0/24";
SubnetUtils utils = new SubnetUtils(subnet);
utils.getInfo().isInRange(address);

CIDRUtilsを使用したコード サンプル

CIDRUtils cidrUtils = new CIDRUtils("10.21.31.0/24");
String networkAddress = cidrUtils.getNetworkAddress();
String broadcastAddress = cidrUtils.getBroadcastAddress();
于 2013-07-18T22:26:20.873 に答える
0

IP アドレスは、32 ビットの整数 (IPv6 の場合は 128 ビット) として表すことができます。したがって、範囲を整数の範囲として単純に扱うことができます。次に、クエリの方法に応じて、 TreeSet、ビット マスク、またはその他のデータ構造を検討できます。別の方法として、 Comparableを実装する整数または IP アドレス ラッパー クラスのいずれかのRangeSetが適切なソリューションになる可能性があります。

于 2013-07-18T22:32:18.827 に答える