-5

LAN ネットワークを使用して接続されているマシンのすべての IP アドレスを見つけるにはどうすればよいですか。

foreach (NetworkInterface netInterface in NetworkInterface.GetAllNetworkInterfaces())
        {
            IPInterfaceProperties ipProps = netInterface.GetIPProperties();
            foreach (UnicastIPAddressInformation addr in ipProps.UnicastAddresses)
            {
                listBox1.Items.Add(addr.Address.ToString());
            }
        }

ここで私が使用しているコード..しかし、このコードは私のローカルIPと127.0.0.1のみを返します。他の IP アドレスが見つかりません。

4

2 に答える 2

2

一般的に、あなたはできません。IPアドレス範囲(ローカルサブネットなど)のすべてのマシンにpingを実行できますが、アクティブなマシンの中にはpingに応答しないものがあります。開いているポート(Webサーバーポート、Windowsファイル共有ポートなど)に接続してみると、一部のマシンが見つかる可能性がありますが、すべてが見つかるとは限りません。また、ネットワークが監視されている場合は、ハッカーのように見える可能性があります。

ネットワークによっては、IPアドレス範囲のDNS逆引き参照を試すことができます。これは、動的IPアドレスが変更された場合でも、名前でホストにアクセスする1つの方法であるため、DHCPが使用され、ローカルDNSサーバーに関連付けられている場合に機能します。このアプローチが機能すると、ホスト名を持つアクティブなリースが返されます(したがって、一部のマシンは現在アクティブではない可能性があります)。

于 2012-12-10T08:06:08.287 に答える
0

名前空間にPingクラスがあります。System.Netただし、ターゲット コンピューターでファイアウォールが実行されていない場合にのみ使用できます。

using System.Net

NetworkInformation.Ping newping = new NetworkInformation.Ping();
NetworkInformation.PingReply reply = newping.Send("192.168.1.1");
if (reply.Status == NetworkInformation.IPStatus.Success)
{
    // Target computer is an active host
}

コンピュータにファイアウォールがある場合、スイッチで単純なネットワーク管理プロトコルを使用することはできません。

于 2012-12-10T08:12:57.980 に答える