2009-01-15 91 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页面中。这不是一个非常有效的方法,但它会非常简单并且几乎可以保证工作(具有适当的选项)。

相关问题