34

自動的に認証するために、指定されたIPアドレスが特別なネットワークからのものであるかどうかを判断する必要があります。

4

7 に答える 7

36

Apache Commons Netにはorg.apache.commons.net.util.SubnetUtils、ニーズを満たしているように見えるものがあります。次のようなことをしているようです:

SubnetInfo subnet = (new SubnetUtils("10.10.10.0", "255.255.255.128")).getInfo();
boolean test = subnet.isInRange("10.10.10.10");

carson が指摘しているように、Apache Commons Net にはバグがあり、場合によっては正しい答えが得られないことに注意してください。Carson は、このバグを回避するために SVN バージョンを使用することを提案しています。

于 2009-02-23T17:34:50.120 に答える
17

あなたも試すことができます

boolean inSubnet = (ip & netmask) == (subnet & netmask);

またはそれより短い

boolean inSubnet = (ip ^ subnet) & netmask == 0;
于 2009-02-23T20:53:57.023 に答える