如何检查我网络中的计算机是否在线?

9
我想知道如何只使用C#检查我的网络中的机器是否在线。
我网络中所有的机器都使用相同的操作系统(Windows 7),并且我在所有机器上都使用相同的用户登录。
我的目标是检查它们是否处于活动状态或打开状态。

4
怎么样关于ping?你如何定义“活跃”和“开放”? - Indy9000
1
@pharaon450:你也可以从C#代码中开始ping :-P - Vlad
如果机器开着,就像机器是打开的。 - pharaon450
@pharaon450 有人打开电脑,然后拔掉了网络线。 - Nate
@vlad 我不担心电缆,它总是会插好的。 - pharaon450
显示剩余2条评论
2个回答

24

简单:

Ping ping = new Ping();
PingReply pingReply = ping.Send("ip address here");

if(pingReply.Status == IPStatus.Success)
{
   //Machine is alive
}

3
有没有其他方法来检查计算机是否处于活动状态?你知道,在某些机器上ping服务可能会被禁用。 - NinethSense
@NinethSense,如果ping服务可以被禁用,你有解决方案吗? - Kiquenet
好的,您可以检查任何端口是否打开。但是循环会耗费时间。 - NinethSense

4

如果不在目标计算机上安装自定义软件,您能做的最好的可能是使用Ping类。

一个快速而简单的实现可能如下所示:

var p = new Ping();
if(p.Send("HostNameOrIP").Status != Success) return;

如果您对“活动和开放”机器有非常具体的要求,并且状态只能在本地检测到,那么您需要编写一个Windows服务来公开WCF服务。该服务将在目标计算机上运行,并在源计算机请求时报告本地状态。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接