這篇是在 Stack Overflow 上看到的「Finding local IP addresses using Python's stdlib」問題。

在取得電腦本機對外 IP 的眾多解答中,我喜歡不是有勾勾的那個答案

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
print(s.getsockname()[0])
s.close()

使用標準函式庫 socket 發起一個「對外」連線,目的地不一定要是 Googld DNS ,可以隨意(不能是 127.0.0.1)。然後透過 getsockname 方法取回「本地位址與對外開放的連線阜號」。

這個答案也跨平台適用在 Windows / Linux / Mac OS 主流系統上。

原理就是把「對外」這件事的判斷交給系統判斷哪組 IP 可以使用。這與有些解答為「列出目前所有 IP」再做拆解判斷的作法又更直接了!

Facebook 外掛功能


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[//////////____30%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *