如何找到使用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地址。
答案 0 :(得分:2)
一般情况下,你不能。您可以尝试ping IP地址范围内的所有计算机(例如,本地子网),但某些活动计算机可能无法响应ping。您可以尝试连接到打开端口(Web服务器端口,Windows文件共享端口等),您可能会找到一些计算机,但不希望找到所有计算机。如果网络受到监控,您可能看起来像黑客。
根据您的网络,您可以尝试针对IP地址范围进行反向DNS查找。这适用于使用DHCP并绑定到本地DNS服务器的情况,因为它是通过名称访问主机的一种方法,即使动态IP地址发生更改也是如此。当它工作时,这种方法将返回带有主机名的活动租约(因此某些机器可能当前不活动)。
答案 1 :(得分: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
}
如果计算机有防火墙,则无法在交换机上使用简单的网络管理协议。