Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中识别对IP地址的ping请求? 我想知道如何找到一个系统是否关闭它的IP地址考虑我已经提供了IP地址列表。_C#_Cmd - Fatal编程技术网

C# 在C中识别对IP地址的ping请求? 我想知道如何找到一个系统是否关闭它的IP地址考虑我已经提供了IP地址列表。

C# 在C中识别对IP地址的ping请求? 我想知道如何找到一个系统是否关闭它的IP地址考虑我已经提供了IP地址列表。,c#,cmd,C#,Cmd,目前,我有一个控制台应用程序,它将命令作为输入,在命令提示符下执行,并在控制台上显示输出 class Program { static void Main(string[] args) { Process cmdProcess = new Process(); cmdProcess.StartInfo.FileName = "cmd.exe"; cmdProcess.StartInfo.RedirectStandardInput =

目前,我有一个控制台应用程序,它将命令作为输入,在命令提示符下执行,并在控制台上显示输出

class Program
{
    static void Main(string[] args)
    {
        Process cmdProcess = new Process();
        cmdProcess.StartInfo.FileName = "cmd.exe";
        cmdProcess.StartInfo.RedirectStandardInput = true;
        cmdProcess.StartInfo.RedirectStandardOutput = true;
        cmdProcess.StartInfo.CreateNoWindow = true;
        cmdProcess.StartInfo.UseShellExecute = false;
        cmdProcess.Start();      
    }
}

如果机器正在响应ping,根据@Paxz的建议,您可以执行以下操作:

var ping = new Ping();
var pingReply = ping.Send("123.123.123.123");

if (pingReply.Status == IPStatus.Success)
{
}
您应该使用尝试在远程计算机上获取

如果您能够访问该对象并拥有适当的权限,则还可以调用其关闭方法1

与ping不同的是,上面验证了您可以连接到机器以实现实际需要的目的2

如果通过IP地址连接到WMI不起作用,您可能希望咨询

1我假设可能存在一种不正常的情况,一方面,您拥有某种形式的启动远程关机的权限,但另一方面,通过WMI执行此操作的某些方面被阻止,但这实际上是对管理员的回击-要求您执行管理任务,正确的路径是WMI

2ping只是告诉您远程机器3正在正确处理ICMP回显。它不会显示系统是否能够执行任何其他活动。如果您要继续进行其他需要连接和其他事情才能工作的活动,那么预先检查ping的连接是毫无意义的。除此之外,在进行预检查和对结果采取行动之间,外部现实可能已经发生了变化

您需要编写代码,以应对网络连接的变化,同时您仍在尝试您的活动或远程计算机因其他原因停机等


3没有任何东西在过滤ICMP回送流量。

神奇的词语是ping。@Paxz,不是所有的机器都在ping上回复。你能稍微改变一下架构吗?我之所以建议这样做,是因为据我所知,如果客户端/远程机器端没有一些更改,就无法检查机器是否在那里。如果您希望在客户端运行一个服务/东西,并在您的主机上进行检查,那么它会工作得更好。不可能为这个问题创建一个不在远程主机上运行软件的通用解决方案。系统可能不响应PING,可能不是无法使用WMI的Windows系统,或者如果不是应答,则可能根本不响应网络流量。您需要的是每个远程主机上的一个程序,它允许您远程控制它。