① 如何用C語言調用ping命令
C語言調用ping命令,參考代碼:
#include <windows.h>
#include <stdio.h>
#include <string.h>
char YN(int k) {
FILE *f;
char fn[40];
char ln[80];
char yn;
int n;
yn='N';
sprintf(fn,"d:\\ping%d.txt",k);
f=fopen(fn,"r");
if (NULL!=f) {
n=0;
while (1) {
if (NULL==fgets(ln,80,f)) break;//
if (strstr(ln,"ms ")) {
yn='Y';
break;//
}
n++;
if (n>=4) break;//
}
fclose(f);
}
return yn;
}
void main(int argc,char **argv) {
char cmdstr[256];
int i;
int IP[3];
char c;
if (argc<2) {
USAGE:
printf("Usage example:\n %s 192.168.60.\nto test 192.168.60.1-254\n",argv[0]);
return;
}
if (4==sscanf(argv[1],"%d.%d.%d%c",&IP[0],&IP[1],&IP[2],&c)) {
if (0<=IP[0] && IP[0]<=255
&& 0<=IP[1] && IP[1]<=255
&& 0<=IP[2] && IP[2]<=255
&& '.'==c) {
for (i=1;i<255;i++) {
sprintf(cmdstr,"cmd /c ping %s%d -n 1 -w 1000 >d:\\ping%d.txt",argv[1],i,i);
WinExec(cmdstr,SW_HIDE);
}
Sleep(3000);
for (i=1;i<255;i++) {
printf("%c %s%d\n",YN(i),argv[1],i);
}
Sleep(3000);
WinExec("cmd /c del /q d:\\ping*.txt",SW_HIDE);
} else goto USAGE;
} else goto USAGE;
}
② ping命令
ping
是DOS命令,一般用於檢測網路通與不通
PING (Packet Internet Grope),網際網路包探索器,用於測試網路連接量的程序。Ping發送一個ICMP回聲清求消息給目的地並報告是否收到所希望的ICMP回聲應答。
它是用來檢查網路是否通暢或者網路連接速度的命令。作為一個生活在網路上的管理員或者黑客來說,ping命令是第一個必須掌握的DOS命令,它所利用的原理是這樣的:網路上的機器都有唯一確定的IP地址,我們給目標IP地址發送一個數據包,對方就要返回一個同樣大小的數據包,根據返回的數據包我們可以確定目標主機的存在,可以初步判斷目標主機的操作系統等。
Ping 是Windows系列自帶的一個可執行命令。利用它可以檢查網路是否能夠連通,用好它可以很好地幫助我們分析判定網路故障。應用格式:Ping IP地址。該命令還可以加許多參數使用,具體是鍵入Ping按回車即可看到詳細說明。
1.Ping本機IP
例如本機IP地址為:172.168.200.2。則執行命令Ping 172.168.200.2。如果網卡安裝配置沒有問題,則應有類似下列顯示:
Replay from 172.168.200.2 bytes=32 time<10ms
Ping statistics for 172.168.200.2
Packets Sent=4 Received=4 Lost=0 0% loss
Approximate round trip times in milli-seconds
Minimum=0ms Maxiumu=1ms Average=0ms
如果在MS-DOS方式下執行此命令顯示內容為:Request timed out,則表明網卡安裝或配置有問題。將網線斷開再次執行此命令,如果顯示正常,則說明本機使用的IP地址可能與另一台正在使用的機器IP地址重復了。如果仍然不正常,則表明本機網卡安裝或配置有問題,需繼續檢查相關網路配置。
2.Ping網關IP
假定網關IP為:172.168.6.1,則執行命令Ping 172.168.6.1。在MS-DOS方式下執行此命令,如果顯示類似以下信息:
Reply from 172.168.6.1 bytes=32 time=9ms TTL=255
Ping statistics for 172.168.6.1
Packets Sent=4 Received=4 Lost=0
Approximate round trip times in milli-seconds
Minimum=1ms Maximum=9ms Average=5ms
則表明區域網中的網關路由器正在正常運行。反之,則說明網關有問題。
3.Ping遠程IP
這一命令可以檢測本機能否正常訪問Internet。比如本地電信運營商的IP地址為:202.102.48.141。在MS-DOS方式下執行命令:Ping 202.102.48.141,如果屏幕顯示:
Reply from 202.102.48.141 bytes=32 time=33ms TTL=252
Reply from 202.102.48.141 bytes=32 time=21ms TTL=252
Reply from 202.102.48.141 bytes=32 time=5ms TTL=252
Reply from 202.102.48.141 bytes=32 time=6ms TTL=252
Ping statistics for 202.102.48.141
Packets Sent=4 Received=4 Lost=0 0% loss
Approximate round trip times in milli-seconds
Minimum=5ms Maximum=33ms Average=16ms
則表明運行正常,能夠正常接入互聯網。反之,則表明主機文件(windows/host)存在問題。
--PING命令參數詳解
-a 將目標的機器標識轉換為ip地址
-t 若使用者不人為中斷會不斷的ping下去
-c count 要求ping命令連續發送數據包,直到發出並接收到count個請求
-d 為使用的套接字打開調試狀態
-f 是一種快速方式ping。使得ping輸出數據包的速度和數據包從遠程主機返回一樣快,或者更快,達到每秒100次。在這種方式下,每個請求用一個句點表示。對於每一個響應列印一個空格鍵。
-i seconds 在兩次數據包發送之間間隔一定的秒數。不能同-f一起使用。
-n 只使用數字方式。在一般情況下ping會試圖把IP地址轉換成主機名。這個選項要求ping列印IP地址而不去查找用符號表示的名字。如果由於某種原因無法使用本地DNS伺服器這個選項就很重要了。
-p pattern 擁護可以通過這個選項標識16 pad位元組,把這些位元組加入數據包中。當在網路中診斷與數據有關的錯誤時這個選項就非常有用。
-q 使ping只在開始和結束時列印一些概要信息。
-R 把ICMP RECORD-ROUTE選項加入到ECHO_REQUEST數據包中,要求在數據包中記錄路由,這樣當數據返回時ping就可以把路由信息列印出來。每個數據包只能記錄9個路由節點。許多主機忽略或者放棄這個選項。
-r 使ping命令旁路掉用於發送數據包的正常路由表。
-s packetsize 使用戶能夠標識出要發送數據的位元組數。預設是56個字元,再加上8個位元組的ICMP數據頭,共64個ICMP數據位元組。
-v 使ping處於verbose方式。它要ping命令除了列印ECHO-RESPONSE數據包之外,還列印其它所有返回的ICMP數據包。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=================================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
《ping的參數!》
Ping 命令可以用來驗證與遠程計算機的連接。(該命令只有在安裝了TCP/IP協議後才能使用)
ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r
count] [-s count] [[-j computer-list] | [-k computer-list]] [-w
timeout] destination-list
參數說明:
-t :一直Ping指定的計算機,直到從鍵盤按下Control-C中斷。
-a :將地址解析為計算機NetBios名。
-n :發送count指定的ECHO數據包數。,通過這個命令可以自己定義發送的個數,對衡量網路速度很有幫助。能
夠測試發送數據包的返回平均時間,及時間的快慢程度。默認值為 4。
-l :發送指定數據量的ECHO數據包。默認為 32 位元組;最大值是65500byt。
-f :在數據包中發送「不要分段」標志,數據包就不會被路由上的網關分段。通常你所發送的數據包都會通過路由分
段再發送給對方,加上此參數以後路由就不會再分段處理。
-i :將「生存時間」欄位設置為TTL指定的值。指定TTL值在對方的系統里停留的時間。同時檢查網路運轉情況的。
-v :tos 將「服務類型」欄位設置為 tos 指定的值。
-r :在「記錄路由」欄位中記錄傳出和返回數據包的路由。通常情況下,發送的數據包是通過一系列路由才到達目
標地址的,通過此參數可以設定,想探測經過路由的個數。限定能跟蹤到9個路由。
-s :指定 count 指定的躍點數的時間戳。與參數-r差不多,但此參數不記錄數據包返回所經過的路由,最多隻記
錄4個。
-j :利用 computer-list 指定的計算機列表路由數據包。連續計算機可以被中間網關分隔(路由稀疏源) IP 允許的
最大數量為 9。
-k :computer-list 利用 computer-list 指定的計算機列表路由數據包。連續計算機不能被中間網關分隔(路由嚴格
源)IP 允許的最大數量為 9。
-w:timeout 指定超時間隔,單位為毫秒。
destination-list: 指定要 ping 的遠程計算機。
一般情況下,通過ping目標地址,可讓對方返回TTL值的大小,通過TTL值可以粗略判斷目標主機的系統類型是Windows還是UNIX/Linux,一般情況下Windows系統返回的TTL值在100-130之間,而UNIX/Linux系統返回的TTL值在240-255之間。但TTL的值是可以修改的。故此種方法可作為參考.
一般操作方法如下:
C:\>ping www.yahoo.com
Pinging www.yahoo.akadns.net [66.218.71.81] with 32 bytes of data:
Reply from 66.218.71.81: bytes=32 time=160ms TTL=41
Reply from 66.218.71.81: bytes=32 time=150ms TTL=41
Reply from 66.218.71.81: bytes=32 time=160ms TTL=41
Reply from 66.218.71.81: bytes=32 time=161ms TTL=41
Ping statistics for 66.218.71.81:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate
round trip times in milli-seconds:
Minimum = 150ms, Maximum = 161ms, Average = 157ms
--------------------------------------------------------------------------------
Tracerttracert
Tracert 該診斷實用程序將包含不同生存時間 (TTL) 值的 Internet 控制消息協議(ICMP)
回顯數據包發送到目標,以決定到達目標採用的路由。要在轉發數據包上的 TTL 之前至少遞減 1,必需路徑上的每個路由器,所以 TTL
是有效的躍點計數。數據包上的 TTL 到達 0 時,路由器應該將「ICMP 已超時」的消息發送回源系統。Tracert 先發送 TTL
為 1 的回顯數據包,並在隨後的每次發送過程將 TTL遞增 1,直到目標響應或 TTL
達到最大值,從而確定路由。路由通過檢查中級路由器發送回的「ICMP 已超時」的消息來確定路由。不過,有些路由器悄悄地下傳包含過期 TTL
值的數據包,而 tracert 看不到。
tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout]
target_name
參數說明:
/d 指定不將地址解析為計算機名。
-h maximum_hops 指定搜索目標的最大躍點數。
-j computer-list 指定沿 computer-list 的稀疏源路由。
-w timeout 每次應答等待 timeout 指定的微秒數。
target_name 目標計算機的名稱。
一般操作方法如下:
C:\>tracert www.yahoo.com
Tracing route to www.yahoo.akadns.net [66.218.71.81] over a maximum
of 30 hops:
1 10 ms <10 ms <10 ms 192.168.0.7
2 <10 ms 10 ms <10 ms 210.192.97.129
3 <10 ms 20 ms 10 ms 192.168.200.21
4 <10 ms 10 ms 10 ms 203.212.0.69
5 <10 ms 10 ms 10 ms 202.108.252.1
6 10 ms 10 ms <10 ms 202.106.193.201
7 10 ms 20 ms 20 ms 202.106.193.169
8 <10 ms 10 ms 10 ms 202.106.192.226
9 <10 ms 10 ms 10 ms 202.96.12.45
10 20 ms 30 ms 20 ms p-6-0-r1-c-shsh-1.cn.net [202.97.34.34]
11 20 ms 30 ms 30 ms p-3-0-r3-i-shsh-1.cn.net [202.97.33.74]
12 160 ms 161 ms 160 ms if-7-7.core1.LosAngeles.Teleglobe.net
[207.45.193.73]
13 200 ms 201 ms 200 ms if-4-0.core1.Sacramento.Teleglobe.net
[64.86.83.170]
14 190 ms 190 ms 190 ms if-2-0.core1.PaloAlto.Teleglobe.net
[64.86.83.201]
15 160 ms 160 ms 160 ms ix-5-0.core1.PaloAlto.Teleglobe.net
[207.45.196.90]
16 180 ms 180 ms 160 ms ge-1-3-0.msr1.pao.yahoo.com
[216.115.100.150]
17 170 ms 210 ms 321 ms vl10.bas1.scd.yahoo.com [66.218.64.134]
18 170 ms 170 ms 170 ms w2.scd.yahoo.com [66.218.71.81]
③ ping 命令詳解
1、首先打開cmd直接輸入ping命令回車,就可以看到系統給出的最詳細的說明了:
④ ping命令大全
-a 將目標的機器標識轉換為ip地址 -t 若使用者不人為中斷會不斷的ping下去 -c count 要求ping命令連續發送數據包,直到發出並接收到count個請求 -d 為使用的套接字打開調試狀態 -f 是一種快速方式ping。使得ping輸出數據包的速度和數據包從遠程主機返回一樣快,或者更快,達到每秒100次。在這種方式下,每個請求用一個句點表示。對於每一個響應列印一個空格鍵。 -i seconds 在兩次數據包發送之間間隔一定的秒數。不能同-f一起使用。 -n 只使用數字方式。在一般情況下ping會試圖把IP地址轉換成主機名。這個選項要求ping列印IP地址而不去查找用符號表示的名字。如果由於某種原因無法使用本地DNS伺服器這個選項就很重要了。 -p pattern 擁護可以通過這個選項標識16 pad位元組,把這些位元組加入數據包中。當在網路中診斷與數據有關的錯誤時這個選項就非常有用。 -q 使ping只在開始和結束時列印一些概要信息。 -R 把ICMP RECORD-ROUTE選項加入到ECHO_REQUEST數據包中,要求在數據包中記錄路由,這樣當數據返回時ping就可以把路由信息列印出來。每個數據包只能記錄9個路由節點。許多主機忽略或者放棄這個選項。 -r 使ping命令旁路掉用於發送數據包的正常路由表。 -s packetsize 使用戶能夠標識出要發送數據的位元組數。預設是56個字元,再加上8個位元組的ICMP數據頭,共64個ICMP數據位元組。 -v 使ping處於verbose方式。它要ping命令除了列印ECHO-RESPONSE數據包之外,還列印其它所有返回的ICMP數據包。