ping -w 和 ping -W 有什么区别?

Raf*_*l T 21 shell ping timeout

什么是-w(截止日期)标志ping?我在ping手册页中找不到它的描述;only for -W,它以秒为参数。它们之间有什么区别,如何将 ping 超时(如果主机没有响应)设置为 200 毫秒?

Chr*_*own 25

来自man ping

   -w deadline
          Specify a timeout, in seconds, before ping exits regardless of how many packets have been sent or received. In this case ping does not stop after count packet are sent, it waits either for deadline expire or until count probes are answered or for some error
          notification from network.

   -W timeout
          Time to wait for a response, in seconds. The option affects only timeout in absense of any responses, otherwise ping waits for two RTTs.
Run Code Online (Sandbox Code Playgroud)

-w设置整个程序会话的超时时间。如果设置-w 30ping(程序)将在 30 秒后退出。

-W另一方面为单个 ping设置超时。如果您设置-W 1,该特定 ping 尝试将超时。

至于如何设置为200ms的个人Ping超时,我不相信这是可以做到的iputils“的版本ping。您可能想尝试直接使用 ICMP 库进行编程。

  • 哦,我的手册页 (archlinux) 缺少 `-w` 标志,但有说明。我只是相信它属于-W。所以没有办法定义一个小于 1s 的超时时间? (2认同)

小智 5

所有好的答案,但是如果(像我一样)您在平台之间移植代码,请注意这个怪癖。下面的文本来自相应的“man ping”文档。

\n\n

在 Mac OS X 上:

\n\n
\n

-W waittime

    \n每个发送的数据包等待回复的时间(以毫秒为单位) 。

\n

\n\n

在树莓派上:

\n\n
\n

-W timeout

    \n 等待响应的时间,以为单位。

\n

\n\n

我在 Mac 上编码为等待 1 秒 (1,000\xe2\x80\xafms) -W\xc2\xa01000,但当此代码移至 Pi 时,它等待了长达 1,000 秒!

\n