2009-01-15 45 views

回答

2

您可以ping網絡上的計算機。

// addressToPing can be an IPaddress or host name. 
// returns a boolean indicating successful ping 
public static bool PingComputer (string[] addressToPing) 
{ 
    Ping pingSender = new Ping(); 
    PingOptions options = new PingOptions(); 

    // Use the default Ttl value which is 128, 
    // but change the fragmentation behavior. 
    options.DontFragment = true; 

    // Create a buffer of 32 bytes of data to be transmitted. 
    string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; 
    byte[] buffer = Encoding.ASCII.GetBytes (data); 
    int timeout = 120; 
    PingReply reply = pingSender.Send (args[0], timeout, buffer, options); 
    return reply.Status == IPStatus.Success; 
} 

http://msdn.microsoft.com/en-us/library/system.net.networkinformation.ping.aspx

您可以使用此代碼的ping和遍歷局域網(for(i = 1; i < 255; i++))的IP地址。你或許應該在儘管這樣做IP地址計算念起來:

http://blogs.msdn.com/knom/archive/2008/12/31/ip-address-calculations-with-c-subnetmasks-networks.aspx

這就是所謂的「ping掃描」。它確實假定網絡上的計算機尚未配置爲忽略ICMP請求。

+0

有沒有辦法找出網絡中可用的IP地址? – Shyju 2009-01-15 17:24:26

0

我會分兩部分來解決這個問題;一個ASP.NET頁面和一個始終運行的服務。

始終運行的服務監控ARP請求,以瞭解哪些機器處於活動狀態。爲了看到ARP回覆,它必須發出它自己的ARP請求。在Windows網絡上,總有足夠的空閒流量(用於瀏覽計算機)非常清楚哪些機器處於活動狀態。

0

如果您有能力在網絡上的各臺計算機上安裝監控軟件,我已使用nagios好運,可以跟蹤哪些服務器在生產網絡中處於高負載/磁盤空間不足/等情況下。它也有一個很好的網絡前端,你甚至不需要使用ASP。

如果您必須使用ASP創建自己的東西,我會使用nmap來掃描您的C類子網,然後將結果打印到您的ASP頁面中。這不是一個非常有效的方法,但它會非常簡單並且幾乎可以保證工作(具有適當的選項)。