如何在ASP.NET中监视网络上的活动计算机?

时间:2009-01-15 17:13:10

标签: asp.net networking monitoring

如何知道哪台机器与使用ASP.NET的PC在同一局域网上运行?

3 个答案:

答案 0 :(得分: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代码并遍历LAN上的IP地址(for(i = 1; i < 255; i++))。您可能应该阅读IP地址计算:

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

这称为'ping sweep'。它确实假设网络上的计算机尚未配置为忽略ICMP请求。

答案 1 :(得分:0)

我会分两部分来处理这个问题;一个ASP.NET页面和一个始终运行的服务。

始终运行的服务是ARP请求的监视器,以便了解哪些计算机处于活动状态。为了查看ARP回复,它必须发出自己的ARP请求。在Windows网络上,始终有足够的空闲流量(对于浏览计算机)可以非常了解哪些计算机处于活动状态。

答案 2 :(得分:0)

如果您能够在网络上的各种计算机上安装监控软件,我很幸运使用nagios来跟踪哪些服务器处于高负荷/低负载/磁盘空间/等等一个生产网络。它还有一个漂亮的Web前端,你根本不需要使用ASP。

如果您必须使用ASP创建自己开发的东西,我会使用nmap扫描您的C类子网,然后在ASP页面中打印结果。这不是一种非常有效的方法,但它非常简单并且几乎可以保证工作(使用适当的选项)。