使用C 呼叫外部Ping命令獲取網路連線情況

2022-01-30 18:00:22 字數 2545 閱讀 6972

摘自:

以前在玩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 類,提供我們強大的呼叫外部工具功能,並透過重新導向輸入與輸出,可以取得執行結果,下面就用乙個例子來示範...