python 獲取本機 IP

2022-06-21 01:18:11 字數 794 閱讀 5120

這個方法是目前見過最優雅獲取本機伺服器的ip方法了。沒有任何的依賴,也沒有去猜測機器上的網路裝置資訊。

而且是利用 udp 協議來實現的,生成乙個udp包,把自己的 ip 放如到 udp 協議頭中,然後從udp包中獲取本機的ip。

這個方法並不會真實的向外部發包,所以用抓包工具是看不到的。但是會申請乙個 udp 的埠,所以如果經常呼叫也會比較耗時的,這裡如果需要可以將查詢到的ip給快取起來,效能可以獲得很大提公升。

# 在 shell 中可以一行呼叫,獲取到本機ip

python -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 獲取本機電腦...