一.参数说明
在控制台输入ping
会有参数说明:
BusyBox v1.22.1 (2019-07-23 15:07:27 CST) multi-call binary.
Usage: ping [OPTIONS] HOST
Send ICMP ECHO_REQUEST packets to network hosts
-4,-6 Force IP or IPv6 name resolution
-c CNT Send only CNT pings
-s SIZE Send SIZE data bytes in packets (default:56)
-t TTL Set TTL
-I IFACE/IP Use interface or IP address as source
-W SEC Seconds to wait for the first response (default:10)
(after all -c CNT packets are sent)
-w SEC Seconds until ping exits (default:infinite)
(can exit earlier with -c CNT)
-q Quiet, only displays output at start
and when finished
-c CNT为发送ping包的数量。
-s SIZE为一个ping包的字节数。
-W SEC为第个ping包的响应超时时间,单位S,其余ping包的响应超时时间为1s。
-w SEC执行PING操作的超时时间,单位S。
二.举例
1.ping 5次,第一个包的响应超时时间为10s,ping不通测试。
命令:ping -c 5 -W 10 14.215.155.2
响应:
PING 14.215.155.2 (14.215.155.2): 56 data bytes
--- 14.215.155.2 ping statistics ---
5 packets transmitted, 0 packets received, 100% packet loss
耗时15s。
2.ping 5次,第一个包的响应超时时间为10s,ping通测试。
命令:ping -c 5 -W 10 14.215.177.38
响应:
PING 14.215.177.38 (14.215.177.38): 56 data bytes
64 bytes from 14.215.177.38: seq=0 ttl=52 time=1185.530 ms
64 bytes from 14.215.177.38: seq=1 ttl=52 time=473.809 ms
64 bytes from 14.215.177.38: seq=2 ttl=52 time=1453.260 ms
64 bytes from 14.215.177.38: seq=3 ttl=52 time=667.310 ms
64 bytes from 14.215.177.38: seq=4 ttl=52 time=652.426 ms
--- 14.215.177.38 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 473.809/886.467/1453.260 ms
耗时5s。
3.ping 5次,ping操作完成超时时间为10s,ping不通测试。
命令:ping -c 5 -w 10 14.215.155.2
响应:
PING 14.215.155.2 (14.215.155.2): 56 data bytes
--- 14.215.155.2 ping statistics ---
10 packets transmitted, 0 packets received, 100% packet loss
耗时10s。
4.ping 5次,ping操作完成超时时间为10s,ping通测试。
命令:ping -c 5 -w 10 14.215.177.38
响应:
PING 14.215.177.38 (14.215.177.38): 56 data bytes
64 bytes from 14.215.177.38: seq=0 ttl=52 time=1905.632 ms
64 bytes from 14.215.177.38: seq=1 ttl=52 time=1006.655 ms
64 bytes from 14.215.177.38: seq=2 ttl=52 time=1506.314 ms
64 bytes from 14.215.177.38: seq=3 ttl=52 time=524.375 ms
64 bytes from 14.215.177.38: seq=4 ttl=52 time=873.773 ms
--- 14.215.177.38 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 524.375/1163.349/1905.632 ms
耗时5s。
三.c代码调用shell命令测试是否ping通指定地址
/**
* @brief 检测是否能ping通指定的IP地址。
* @param
* strIP:需要ping的主机地址。
* pingCnt:执行ping的次数。
* pingFirstResponseTimeOut:第一个包的响应超时时间。
* Result:传入的存放结果的地址,*Result=1表示ping通,*Result=0表示没有ping通。
* @retval false:执行失败,true:执行成功。
*/
bool ShellPing( char *strIP, uint8_t pingCnt, uint8_t pingFirstResponseTimeOut, uint8_t *Result )
{
char cmd[100];
*Result = 0;
sprintf( cmd, "ping -c %d -W %d %s", pingCnt, pingFirstResponseTimeOut, strIP );
FILE *fp = popen( cmd, "r" );
if( !fp )
{
return false;
}
char buff[1024];
size_t len = fread( buff, 1, sizeof(buff), fp );
buff[len] = '\0';
printf("ping:%s\r\n", buff );
if( len > 0 )
{
if( (strstr(buff, "packets transmitted") != NULL) && (strstr(buff, "100% packet loss") == NULL) )
{
*Result = 1;
}
}
pclose( fp );
return true;
}
不能ping通测试:
/**
* @brief None
* @param None
* @retval None
*/
int main(int argc, char** argv)
{
if( ShellPing( "14.215.155.2", 5, 10, &pingResult ) == true )
{
printf("ping Result:%d\r\n", pingResult);
}
else
{
printf("ping error!\r\n");
}
exit(0);
}
运行结果:
ping:PING 14.215.155.2 (14.215.155.2): 56 data bytes
--- 14.215.155.2 ping statistics ---
5 packets transmitted, 0 packets received, 100% packet loss
ping Result:0
能ping通测试:
/**
* @brief None
* @param None
* @retval None
*/
int main(int argc, char** argv)
{
if( ShellPing( "14.215.177.38", 5, 10, &pingResult ) == true )
{
printf("ping Result:%d\r\n", pingResult);
}
else
{
printf("ping error!\r\n");
}
exit(0);
}
运行结果:
ping:PING 14.215.177.38 (14.215.177.38): 56 data bytes
64 bytes from 14.215.177.38: seq=0 ttl=52 time=1178.263 ms
64 bytes from 14.215.177.38: seq=1 ttl=52 time=417.850 ms
64 bytes from 14.215.177.38: seq=2 ttl=52 time=815.923 ms
64 bytes from 14.215.177.38: seq=3 ttl=52 time=1345.252 ms
64 bytes from 14.215.177.38: seq=4 ttl=52 time=944.915 ms
--- 14.215.177.38 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 417.850/940.440/1345.252 ms
ping Result:1
52 time=944.915 ms
--- 14.215.177.38 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 417.850/940.440/1345.252 ms
ping Result:1
火柴棍科技工作室:www.huochaigun.top
技术交流群
STM32MP1:861926625
ESP8266:476685983
无线(NB-IOT, Cat.1, 4G)通信模组:666129332