摘自:
以前在玩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();
在本機測試得到如下結果:
有了輸出結果,那還有什麼好說的,分析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內部命令,我們都可以用上面的方式來執行它,並獲取相應的結果,並且這些程式的執行過程不會顯示出來,如果需要呼叫外部程式就可以嵌入到其中使用了。
使用C 呼叫外部Ping命令獲取網路連線情況
以前在玩windows 98的時候,幾台電腦連起來,需要測試網路連線是否正常,經常用的乙個命令就是ping.exe。感覺相當實用。現在.net為我們提供了強大的功能來呼叫外部工具,並通過重定向輸入 輸出獲取執行結果,下面就用乙個例子來說明呼叫ping.exe命令實現網路的檢測,希望對.net初學者有...
使用C 呼叫外部序或是執行DOS命令
使用 system.diagnostics.process.start 如 system.diagnostics.process.start abc.txt 在.net裡,提供了process類,提供我們強大的呼叫外部工具功能,並透過重新導向輸入與輸出,可以取得執行結果,下面就用乙個例子來示範在乙個...
使用C 呼叫外部序或是執行DOS命令
使用 system.diagnostics.process.start 如 system.diagnostics.process.start abc.txt 在 net 裡,提供了 process 類,提供我們強大的呼叫外部工具功能,並透過重新導向輸入與輸出,可以取得執行結果,下面就用乙個例子來示範...