這個方法是目前見過最優雅獲取本機伺服器的ip方法了。沒有任何的依賴,也沒有去猜測機器上的網路裝置資訊。
而且是利用 udp 協議來實現的,生成乙個udp包,把自己的 ip 放如到 udp 協議頭中,然後從udp包中獲取本機的ip。
這個方法並不會真實的向外部發包,所以用抓包工具是看不到的。但是會申請乙個 udp 的埠,所以如果經常呼叫也會比較耗時的,這裡如果需要可以將查詢到的ip給快取起來,效能可以獲得很大提公升。
# 在 shell 中可以一行呼叫,獲取到本機ippython -c "
import socket;print([(s.connect(('8.8.8.8', 53)), s.getsockname()[0], s.close()) for s in [socket.socket(socket.af_inet, socket.sock_dgram)]][0][1])
"10.12.189.16
#可以封裝成函式,方便 python 的程式呼叫
import
socket
defget_host_ip():
try:
s =socket.socket(socket.af_inet, socket.sock_dgram)
s.connect((
'8.8.8.8
', 80))
ip =s.getsockname()[0]
finally
: s.close()
return ip
python 獲取本機 IP
總是會有獲取本機 ip 的需求,但是就是這樣乙個簡單的需求處理起來還是有很多需要細化 明確的東東。1 什麼是本機 ip?本機的外網 ip?本機的內網 ip?2 是在 linux 上還是其他系統也要支援?為此,咱今兒特意查了下谷歌娘,總結得到以下 支援linux 32 64,solaris,win.但...
python獲取linux本機IP
usr bin env python encoding utf 8 description get local ip address import os import socket,fcntl,struct def get ip 注意外圍使用雙引號而非單引號,並且假設預設是第乙個網絡卡,特殊環境請適...
python獲取本機ip位址
文章目錄 隱藏 在專案中使用 python udp,繫結時需要用到 ip 何埠,開始使用 socket.gethostbyname 時,當計算機名為中文時會提示,結果發現就是轉碼問題 socket.gaierror errno11004 getaddrinfo failedimport 獲取本機電腦...