Naposledy aktivní 10 months ago

這段程式碼透過多次執行系統的 ping 指令來測試指定主機(預設為 8.8.8.8)的連線狀態,並根據多次成功的回應判斷網路是否穩定連通。

timmy revidoval tento gist 10 months ago. Přejít na revizi

Žádné změny

timmy revidoval tento gist 10 months ago. Přejít na revizi

Žádné změny

timmy revidoval tento gist 10 months ago. Přejít na revizi

Žádné změny

timmy revidoval tento gist 10 months ago. Přejít na revizi

1 file changed, 43 insertions

network_connection_checker.py(vytvořil soubor)

@@ -0,0 +1,43 @@
1 + import subprocess
2 + import platform
3 + import time
4 +
5 + def ping_once(host):
6 + """
7 + 使用系統的 ping 指令對指定 host 發送一次封包,
8 + 回傳 True 代表 ping 成功,False 代表失敗。
9 + """
10 + # 根據作業系統決定參數:Windows 用 -n,其他平台用 -c
11 + param = '-n' if platform.system().lower() == 'windows' else '-c'
12 + command = ['ping', param, '1', host]
13 + try:
14 + # 不顯示輸出
15 + result = subprocess.run(command, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
16 + return result.returncode == 0
17 + except Exception as e:
18 + print(f"呼叫 ping 指令發生例外:{e}")
19 + return False
20 +
21 + def is_network_connected(host='8.8.8.8', attempts=5, success_threshold=3, delay=1):
22 + """
23 + 透過連續 ping 嘗試判斷網路連線狀態:
24 + - attempts: ping 嘗試次數
25 + - success_threshold: 成功次數達此值才視為連線正常
26 + - delay: 每次 ping 之間的等待秒數
27 + """
28 + success_count = 0
29 + for i in range(attempts):
30 + if ping_once(host):
31 + success_count += 1
32 + print(f"[{i+1}/{attempts}] Ping 成功")
33 + else:
34 + print(f"[{i+1}/{attempts}] Ping 失敗")
35 + # 避免連續發送太快
36 + time.sleep(delay)
37 + return success_count >= success_threshold
38 +
39 + if __name__ == '__main__':
40 + if is_network_connected():
41 + print("網路連線正常")
42 + else:
43 + print("網路連線有問題")
Novější Starší