-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

一般来说,你不能。您可以尝试 ping IP 地址范围内的所有机器(例如本地子网),但某些活动机器可能无法响应 ping。您可以尝试连接到开放端口(Web 服务器端口、Windows 文件共享端口等),您可能会找到一些机器,但不要期望找到所有机器。如果网络受到监控,你可能看起来像个黑客。

根据您的网络,您可以尝试反向 DNS 查找 IP 地址范围。这适用于使用 DHCP 并将其绑定到本地 DNS 服务器的情况,这很常见,因为它是一种通过名称访问主机的方式,即使动态 IP 地址发生更改也是如此。当它起作用时,这种方法将返回带有主机名的活动租约(因此某些机器可能当前不活动)。

于 2012-12-10T08:06:08.287 回答
0

命名空间中有一个PingSystem.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 回答