使用
C#
调用外部
Ping
命令获取网络连接情况
以前在玩
Windows 98
的时候,几台电脑连起来,需要测试网络连接是否正常,经常用的一个命令就是
Ping.exe
。感觉相当实用。
现在
.net
为我们提供了强大的功能来调用外部工具,并通过重定向输入、输出获取执行结果,下面就用一个例子来说明调用
Ping.exe
命令实现网络的检测,希望对
.net
初学者有所帮助。
首先,我们用使用
Process
类,来创建独立的进程,导入
System.Diagnostics
,
using System.Diagnostics;
实例一个Process
类,启动一个独立进程
Process p = new Process();
Process
类有一个
StartInfo
属性,这个是ProcessStartInfo
类,包括了一些属性和方法,
下面我们用到了他的几个属性:
设定程序名
p.StartInfo.FileName = "cmd.exe";
关闭Shell
的使用
p.StartInfo.UseShellExecute = false;
重定向标准输入
p.StartInfo.RedirectStandardInput = true;
重定向标准输出
p.StartInfo.RedirectStandardOutput = true;
重定向错误输出
p.StartInfo.RedirectStandardError = true;
设置不显示窗口
p.StartInfo.CreateNoWindow = true;
上面几个属性的设置是比较关键的一步。
既然都设置好了那就启动进程吧,
p.Start();
输入要执行的命令,这里就是ping
了,
p.StandardInput.WriteLine("ping -n 1 192.192.132.229");
p.StandardInput.WriteLine("exit");
从输出流获取命令执行结果,
string strRst = p.StandardOutput.ReadToEnd();
在本机测试得到如下结果:
"Microsoft Windows 2000 [Version 5.00.2195]/r/n(C)
版权所有
1985-2000 Microsoft
Corp./r/n/r/nD://himuraz//csharpproject//ZZ//ConsoleTest//bin//Debug>ping
-n 1 192.192.132.231/r/n/r/r/nPinging 192.192.132.231 with 32 bytes of
data:/r/r/n/r/r/nReply from 192.192.132.231: bytes=32 time<10ms
TTL=128/r/r/n/r/r/nPing statistics for 192.192.132.231:/r/r/n
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),/r/r/nApproximate round trip times in milli-seconds:/r/r/n
Minimum = 0ms, Maximum =
0ms, Average =
0ms/r/r/n/r/nD://himuraz//csharpproject//ZZ//ConsoleTest//bin//Debug>exit/r/n"
有了输出结果,那还有什么好说的,分析strRst
字符串就可以知道网络的连接情况了。
下面是一个完整的程序,当然对Ping.exe程序执行的结果不全,读者可以进一步修改
完整代码如下:
using System;
using System.Diagnostics;
namespace ZZ
{
class ZZConsole
{
[STAThread]
static void Main(string[] args)
{
string ip = "192.192.132.229";
string strRst = CmdPing(ip);
Console.WriteLine(strRst);
Console.ReadLine();
}
private static string CmdPing(string strIp)
{
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
string pingrst;
p.Start();
p.StandardInput.WriteLine("ping -n 1 "+strIp);
p.StandardInput.WriteLine("exit");
string strRst = p.StandardOutput.ReadToEnd();
if(strRst.IndexOf("(0% loss)")!=-1)
pingrst = "
连接";
else if( strRst.IndexOf("Destination host unreachable.")!=-1)
pingrst = "
无法到达目的主机";
else if(strRst.IndexOf("Request timed out.")!=-1)
pingrst = "
超时";
else if(strRst.IndexOf("Unknown host")!=-1)
pingrst = "
无法解析主机";
else
pingrst = strRst;
p.Close();
return pingrst;
}
}
}
总结,这里就是为了说明一个问题,
不但是Ping
命令,只要是命令行程序或者是Dos
内部命令,我们都可以用上面的方式来执行它,并获取相应的结果,并且这些程序的执行过程不会显示出来,如果需要调用外部程序就可以嵌入到其中使用了。
相关推荐
2 海康视觉平台VisionMaster 上手系列:大纲及准备
海康视觉平台VisionMaster 大纲,课前准备 快速入门 工业机器视觉 机器视觉
使用C#调用Ping命令获取网络连接情况
使用C#调用外部Ping命令获取网络连接情况。
用MATLAB从零实现六足机器人步态仿真:交替三角与波动步态保姆级教程
本文详细介绍了如何使用MATLAB从零实现六足机器人的两种经典步态仿真:交替三角支撑步态和波动步态。通过参数定义、相位设置、运动轨迹生成和三维可视化等步骤,帮助读者掌握六足机器人步态规划的核心技术。教程包含完整代码和详细解析,适合机器人爱好者和相关专业学生学习实践。
用C#实现实现简单的 Ping 的功能,用于测试网络是否已经联通
用C#实现实现简单的 Ping 的功能,用于测试网络是否已经联通 1. 根据IP地址获得主机名称 /// /// 根据IP地址获得主机名称 /// /// 主机的IP地址 /// 主机名称 public string GetHostNameByIp(string ip)
小土堆学习笔记1:Dataset类代码实践
上一页中反复提到“类”,这究竟是什么东西?按我的理解(肯定不准确也不正式),class类就是某一个东西的共性,而且是等待被确认的共性。比如每台手机都有它自己的品牌、框架、价格等等属性,class类正是这些尚不确定的属性;而一旦确认了这些属性,就能够确认这到底是一台什么型号什么状态的手机,在确认了全部属性后就知道,这是一台Apple 16 Pro Max。抽象的不确定的共性就是类,具体的确定的个性就是示例。这个共性可以被用于多个编程目的,只不过某一个具体的编程行为还有它自己的独特性。
WSL 运行make提示/lib/modules/xxx/build: No such file or directory. Stop.错误解决办法
WSL运行make提示/lib//modules/xxx文件或目录不存在。 WSL2的内核是修改过的,无法使用 ubuntu上游的内核头文件和modules文件,因此,我们需要手动编译并安装一个版本。
使用C#写的TCP通讯程序本机调试能连接,但是别的电脑无法连接,已通过ping电脑IP地址确认电脑导通...
使用C#写的TCP通讯程序本机调试能连接,但是别的电脑无法连接,已通过ping电脑IP地址确认电脑导通。 此时,问题可能出在工程的设置:注意,调试时无法连接有可能是没有勾选下图所示的选项 ...
centos7下安装gcc-10.3.0
生成多个系统版本的代码,如果你的操作系统是32位,默认就已经设置为 disable,这时gcc仅能生成32位的可执行程序;这里只开启了c,c++ 和fortran,因为支持的语言越多,就需要安装越多的相应静态与动态库,还有五花八门的依赖库,这会让管理变得困难,体积也会变得庞大。启用posix标准的线程支持,这个设置取决于宿主或目标操作系统的类型,其它可用值有:aix,dec,solaris,win32等,如果你是其它的类UNIX系统,就需要设置相应的值。指定安装路径,这里没有指定,就直接放到文件夹里就好。
C#执行dos里面的命令的方法,在Web中使用,比如ping,ipconfig等
private string ExecuteCmd(string command) { StringBuilder sb = new StringBuilder(); string version = System.Environment.OSVersion.VersionString;//读取操作系统版本 i
SAP HANA CDS View Syntax Options 全解:从语法到工程实践
本文面向SAP HANA工程师,深入解析CDS视图的语法与应用场景。文章涵盖XS Advanced环境下的CDS视图设计要点,包括SELECT基础语法、聚合函数与分组约束、参数化视图实现以及常见连接操作。特别强调工程实践中的注意事项:GROUP BY禁用表达式、原生表名大小写规范、结果集裁剪方式选择等。通过两个真实案例(办公室占用率统计和客户画像分析)展示CDS视图在实际业务中的应用,并提供性能优化建议。全文采用中英文混排规范,技术术语使用反引号标注,旨在为开发者提供清晰的CDS视图开发指南。
YOLOv8改进 | 注意力机制 | 添加HAttention(HAT)超分辨率重建助力小目标检测 (全网首发,超分辨率检测)
本文给大家带来的改进机制是HAttention注意力机制,混合注意力变换器(HAT)的设计理念是通过融合通道注意力和自注意力机制来提升单图像超分辨率重建的性能。通道注意力关注于识别哪些通道更重要,而自注意力则关注于图像内部各个位置之间的关系。HAT利用这两种注意力机制,有效地整合了全局的像素信息,从而提供更为精确的结果(这个注意力机制挺复杂的光代码就700+行),但是效果挺好的也是10月份最新的成果非常适合添加到大家自己的论文中。⭐⭐⭐⭐⭐(最新的改进机制)
使用C#调用外部Ping命令获取网络连接情况(转——主要是对dos命令应用)
使用C#调用外部Ping命令获取网络连接情况 以前在玩Windows 98的时候,几台电脑连起来,需要测试网络连接是否正常,经常用的一个命令就是Ping.exe。感觉相当实用。 现在 .net为我们提供了强大的功能来调用外部工具,并通过重定向输入、输出获取执行结果,下面就用一个例子来说明调用Ping.exe命令实现网络的检测,希望对.net初学者有所帮助。首先,我们用使用Process类,来创建独
s8654
The official Snapdragon Ride SX 4.0 development board provides standardized hardware support for the secondary development and functional verification of the s8654 platform.
使用C#调用外部Ping命令获取网络连接情况(转贴)
以前在玩Windows 98的时候,几台电脑连起来,需要测试网络连接是否正常,经常用的一个命令就是Ping.exe。感觉相当实用。 现在 .net为我们提供了强大的功能来调用外部工具,并通过重定向输入、输出获取执行结果,下面就用一个例子来说明调用Ping.exe命令实现网络的检测,希望对.net初学者有所帮助。首先,我们用使用Process类,来创建独立的进程,导入System.Diag...
数学建模模型总结
这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
1万+



被折叠的 条评论
为什么被折叠?



