linux ping命令参数说明及使用

一.参数说明

在控制台输入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

ping命令Linux系统中一个常用的网络命令,用于检测与目标主机之间的网络连通性。它通过发送ICMP(Internet Control Message Protocol)报文并等待目标主机返回的响应来判断网络连接的质量和稳定性。 ping命令使用非常简单,只需在终端中输入“ping 目标主机”的命令即可。命令执行后,系统会发送一连串的ICMP回显请求给目标主机,然后根据目标主机的响应情况,计算并显示出具体的网络延迟(往返时间)以及报文丢失情况。 ping命令的输出结果中,主要包含了目标主机的IP地址、报文大小、回显次数、往返时间和报文丢失率等信息。通过观察往返时间,可以初步判断网络连接的稳定性和延迟情况。报文丢失率越低,说明网络连接越稳定。 除了基本的ping命令外,还有一些附加参数可以帮助我们更详细地分析网络连接情况。比如,使用“-c”参数可以指定发送的回显请求次数;使用“-W”参数可以设置等待目标主机响应的超时时间;还可以使用“-s”参数指定发送的ICMP报文大小等。这些参数根据具体的需求可进行适当调整。 总之,ping命令Linux系统中一个非常常用的网络命令,通过它可以轻松、快速地检测网络连通性以及初步评估网络质量。在网络故障排查和调优过程中,ping命令常被用于测试网络性能、延迟和丢包情况,是网络管理和维护工作中必不可少的工具。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火柴棍mcu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值