私はLANベースのソフトウェアに取り組んでおり、Javaを使用してネットワーク内のシステムが存在する範囲を検出する必要があります。この機能は、Windowsユーティリティソフトウェアであるnetscanの「ローカルIP範囲の検出」と同様である必要があります。この点での助けは大歓迎です。
質問する
414 次
2 に答える
1
于 2012-10-10T17:03:18.663 に答える
1
ローカルサブネット内の有効なIPアドレスのリストではなく、実際のローカルサブネットのIP範囲が必要な場合は、次のコードを使用してサブネットマスクサイズを取得できます。
InetAddress localHost = Inet4Address.getLocalHost();
NetworkInterface ni = NetworkInterface.getByInetAddress(localHost);
InterfaceAddress ia = ni.getInterfaceAddresses().get(0);
short mask = ia.getNetworkPrefixLength();
これshort
により、値が1〜32、おそらく24のプリミティブが得られます。次に、次を使用できます。
byte[] b = ia.getAddress().getAddress();
これbyte[]
により、サブネットに対してマスクして、mask
使用可能な形式でローカルアドレス範囲を取得できます。
または、ローカルサブネット上の稼働中のホストのリストが必要な場合は、 JPCapを使用したarp-scanが私が使用する方法です。
于 2012-10-10T17:14:54.307 に答える