如何使用 Python 檢查使用者的網路連線是否已開啟或關閉?
通常,如果您需要驗證當前系統是否連線到網際網路,我們可以透過簡單地向任何 Web 伺服器應用程式傳送請求(使用瀏覽器或使用 dos 命令 ping)來做到這一點。
ping 命令通常用於排查連線、可達性和名稱解析問題。
類似地,在 Python 中,我們可以透過向任何 Web 應用程式傳送請求或使用 ping 命令來驗證使用者的網際網路連線狀態。
使用 request.get() 方法
在 Python 中,requests 模組幫助我們使用 Python 傳送 HTTP 請求。透過使用該模組的方法向任何網站傳送請求,我們可以確定使用者的網際網路連線是否已開啟或關閉。
Python requests 模組的 get() 方法接受 URL 作為引數,並向指定的 URL 傳送 GET 請求。
語法
以下是 get() 函式的語法:
requests.get(link, timeout)
其中,
link 是網頁的連結
timeout 是等待 DNS 伺服器響應的時間。
如果我們嘗試在沒有網際網路連線的情況下發送請求,此方法會引發異常。
示例
在此示例中,透過將網站連結傳遞給 get() 函式,我們試圖確定當前系統是否連線到網際網路。
import requests
def internet_connection():
try:
response = requests.get("https://dns.tutorialspoint.com", timeout=5)
return True
except requests.ConnectionError:
return False
if internet_connection():
print("The Internet is connected.")
else:
print("The Internet is not connected.")
輸出
The Internet is connected.
使用 socket.connect() 方法
套接字是雙向通訊通道的端點。套接字可以在程序內、同一臺機器上的程序之間或不同大陸上的程序之間進行通訊。我們在 Python 中使用 socket 模組來建立和使用套接字。
socket 模組的 connect() 方法用於建立到地址處的遠端套接字的連線。如果當前系統未連線到網際網路,此方法會引發異常。
示例
讓我們看一個使用 socket 模組的 connect() 函式檢查使用者網際網路連線性的示例。
import socket
def check_internet_connection():
remote_server = "www.google.com"
port = 80
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(5)
try:
sock.connect((remote_server, port))
return True
except socket.error:
return False
finally:
sock.close()
if check_internet_connection():
print("Internet is connected.")
else:
print("Internet is not connected.")
輸出
Internet is not connected.
使用 urllib.request.urlopen() 方法
與上述兩個庫類似,Python 還有一個名為 urllib.request 的可擴充套件庫。使用此模組的功能和類,我們可以向所需的 URL 傳送請求。
urllib.request.urlopen() 函式接受 URL(作為其引數之一)並開啟到指定 URL 的連線。與上述兩種方法類似,如果我們在未連線到網際網路的情況下執行此方法,此函式會引發異常。
示例
以下是如何使用 urllib.request 模組檢查使用者網際網路連線性的示例。在這裡,我們使用 urlopen() 函式開啟指定的網站並檢查使用者的網際網路狀態。
import urllib.request
def check_internet_connection():
try:
urllib.request.urlopen("https://www.Tutorialspint.com")
return True
except urllib.error.URLError:
return False
if check_internet_connection():
print("Internet is connected.")
else:
print("Internet is not connected.")
輸出
Internet is not connected.
使用 ping 命令
要檢查使用者的網際網路連線是否已開啟或關閉,我們還可以使用 ping 命令,它通常用於向遠端伺服器傳送 Internet 控制報文協議 (ICMP) 回顯請求,然後檢查是否收到響應。
使用 subprocess 模組,我們可以從當前 Python 程式啟動一個新的應用程式。我們可以使用 check_output() 方法獲取程式或命令的輸出。我們可以使用此方法執行 ping 命令,並確定當前系統是否連線到網際網路。
示例
這可以透過匯入 subprocess 模組來完成。在 subprocess 中,我們有 check_output() 函式,它檢查網際網路狀態。以下是程式碼。
import subprocess
def check_internet_connection():
try:
subprocess.check_output(["ping", "-c", "1", "8.8.8.8"])
return True
except subprocess.CalledProcessError:
return False
if check_internet_connection():
print("Internet is connected.")
else:
print("Internet is not connected.")
輸出
以下是我們在執行程式碼時上述程式碼的輸出:
Internet is not connected.
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP