2012-12-10 102 views
-4

如何查找使用LAN網絡連接的計算機的所有IP地址。如何在C#中獲取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地址。

+2

請顯示一些代碼...你試過了什麼?什麼不工作? – Yahia

+0

你試圖做的事情似乎更像DHCP服務器的工作......請解釋爲什麼你需要這樣做,以便人們可以在需要時幫助替代方案。 – ryadavilli

+2

您的工作量接近0. – leppie

回答

2

一般來說,你不能。您可以嘗試ping IP地址範圍內的所有計算機(例如本地子網),但某些活動計算機可能不響應ping。您可以嘗試連接到打開的端口(網絡服務器端口,Windows文件共享端口等),您可能會發現一些機器,但不要指望找到所有機器。如果網絡受到監控,您可能看起來像黑客。

根據您的網絡,您可以嘗試對IP地址範圍進行反向DNS查找。這適用於使用DHCP並綁定到本地DNS服務器的情況,這很常見,因爲即使動態IP地址發生更改,它也是通過名稱訪問主機的一種方式。當它起作用時,這種方法將以主機名返回活動租約(因此有些機器可能不會處於活動狀態)。

0

命名空間System.Net中有Ping類。但是隻有目標計算機不運行防火牆時纔可以使用它。

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 
} 

如果計算機有防火牆,則不能在交換機上使用簡單的網絡管理協議。

相關問題