间歇性 ping 失败,即使主机设备具有有效的 IP 地址
intermittent ping failures even though host device has valid IP address
我在我的 cpp 代码中使用 ping 命令,我的应用程序将使用此代码根据 ping 响应确定网络中的特定设备是连接还是断开。我们将以下参数发送到 ping 命令
dataBlockSize [56] packetCount [1] timeOut [1] host [IP 地址].
对于其中一台设备,ping 间歇性失败,我们收到的数据包为 0。它是间歇性的(有时 ping 成功,有时在几秒内失败)。我不确定为什么即使设备具有有效 IP,ping 也会失败。任何人都可以让我知道 ping 命令失败的任何原因,即使设备已连接并且具有有效的 IP。如果连接类型很重要,则设备通过 WiFi 连接。
经常是网络拥堵。 ping 使用的 ICMP 是低优先级流量,如果网络拥塞,它最先被丢弃。此外,被 ping 的主机可能太忙而无法响应。您应该检查路径中网络设备的日志和接口,看是否拥塞。
相关问题可以在这里找到:
一个很好的答案对我很有帮助。如果您不想单击 link,我在下面提供了更多信息。
就我而言,我在 ping 我的网络网关 (10.20.0.254) 时看到了问题:
$ ping 10.20.0.254
PING 10.20.0.254 (10.20.0.254) 56(64) bytes of data
64 bytes from 10.20.0.254: icmp_seq=4 ttl=255 time=0.815ms
64 bytes from 10.20.0.254: icmp_seq=5 ttl=255 time=0.792ms
64 bytes from 10.20.0.254: icmp_seq=6 ttl=255 time=0.619ms
64 bytes from 10.20.0.254: icmp_seq=7 ttl=255 time=0.781ms
64 bytes from 10.20.0.254: icmp_seq=8 ttl=255 time=0.740ms
64 bytes from 10.20.0.254: icmp_seq=54 ttl=255 time=0.812ms
64 bytes from 10.20.0.254: icmp_seq=55 ttl=255 time=0.757ms
64 bytes from 10.20.0.254: icmp_seq=56 ttl=255 time=0.775ms
64 bytes from 10.20.0.254: icmp_seq=57 ttl=255 time=0.799ms
64 bytes from 10.20.0.254: icmp_seq=58 ttl=255 time=0.748ms
注意 icmp_seq 数字中与丢弃的 ping 相对应的间隙。
最后,我的问题是 DHCP 服务器为我的机器提供了一个已经在使用的 IP(我猜是静态分配的)。手动设置未分配的 IP(通过使用不同的机器在 DHCP 服务器分配的 IP 周围 ping IP 来确定)解决了我的问题。
我在我的 cpp 代码中使用 ping 命令,我的应用程序将使用此代码根据 ping 响应确定网络中的特定设备是连接还是断开。我们将以下参数发送到 ping 命令 dataBlockSize [56] packetCount [1] timeOut [1] host [IP 地址].
对于其中一台设备,ping 间歇性失败,我们收到的数据包为 0。它是间歇性的(有时 ping 成功,有时在几秒内失败)。我不确定为什么即使设备具有有效 IP,ping 也会失败。任何人都可以让我知道 ping 命令失败的任何原因,即使设备已连接并且具有有效的 IP。如果连接类型很重要,则设备通过 WiFi 连接。
经常是网络拥堵。 ping 使用的 ICMP 是低优先级流量,如果网络拥塞,它最先被丢弃。此外,被 ping 的主机可能太忙而无法响应。您应该检查路径中网络设备的日志和接口,看是否拥塞。
相关问题可以在这里找到:
一个很好的答案对我很有帮助。如果您不想单击 link,我在下面提供了更多信息。
就我而言,我在 ping 我的网络网关 (10.20.0.254) 时看到了问题:
$ ping 10.20.0.254
PING 10.20.0.254 (10.20.0.254) 56(64) bytes of data
64 bytes from 10.20.0.254: icmp_seq=4 ttl=255 time=0.815ms
64 bytes from 10.20.0.254: icmp_seq=5 ttl=255 time=0.792ms
64 bytes from 10.20.0.254: icmp_seq=6 ttl=255 time=0.619ms
64 bytes from 10.20.0.254: icmp_seq=7 ttl=255 time=0.781ms
64 bytes from 10.20.0.254: icmp_seq=8 ttl=255 time=0.740ms
64 bytes from 10.20.0.254: icmp_seq=54 ttl=255 time=0.812ms
64 bytes from 10.20.0.254: icmp_seq=55 ttl=255 time=0.757ms
64 bytes from 10.20.0.254: icmp_seq=56 ttl=255 time=0.775ms
64 bytes from 10.20.0.254: icmp_seq=57 ttl=255 time=0.799ms
64 bytes from 10.20.0.254: icmp_seq=58 ttl=255 time=0.748ms
注意 icmp_seq 数字中与丢弃的 ping 相对应的间隙。
最后,我的问题是 DHCP 服务器为我的机器提供了一个已经在使用的 IP(我猜是静态分配的)。手动设置未分配的 IP(通过使用不同的机器在 DHCP 服务器分配的 IP 周围 ping IP 来确定)解决了我的问题。