为什么当我从 python 进行 ping 测试时,它对 windows cmd 有不同的响应?

Why when I make a ping test from python does it have a different response to in windows cmd?

当我在 windows cmd 中使用命令 ping -l 1 -n 1 -w 750 google.com 时,它给我一个大约 10 毫秒的 ping。当我使用 python 和以下代码对其进行测试时,尽管超时为 750 毫秒,它仍会通过蜂鸣和打印定期检测超时。

import subprocess
import winsound
import datetime
while 1:
    try:
        subprocess.check_output(['ping', '-l', '1', '-n', '1', '-w', '750', 'google.com'])
    except:
        print("cut at:", datetime.datetime.now())
        winsound.Beep(250, 500)

引发的异常是:

subprocess.CalledProcessError: Command '['ping', '-l', '1', '-n', '1', '-w', '750', 'google.com']' returned non-zero exit status 1

为什么它有如此不同的响应,有没有办法让代码更可靠地检测到互联网中断?

我发现了问题。因为它处于无限 while 循环中,所以它会每秒多次 ping google 并且他们的 dos 预防可能会注意到这一点并防止更多请求导致超时。它很容易在尝试部分用 time.sleep(1) 修复。