Python獲取ip地址的3種方法代碼
方法一
#獲取本機IP地址
def get_local_ip():
# s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# s.connect(('8.8.8.8', 80))
# ip = s.getsockname()[0]
# s.close()
ip = socket.gethostbyname(socket.gethostname())
return ip運行結(jié)果:
D:\Python3.8.6\python.exe D:/PythonWorkSpace/someip/Common/get_IP_adress.py
192.168.42.44Process finished with exit code 0
方法二
#獲取公網(wǎng)IP地址
def get_public_ip():
response = requests.get("http://httpbin.org/ip")
data = response.json()
ip = data['origin']
return ip運行結(jié)果:
D:\Python3.8.6\python.exe D:/PythonWorkSpace/someip/Common/get_IP_adress.py
223.76.212.244Process finished with exit code 0
方法三
# 獲取本機所有 IP 地址
def get_all_ip():
hostname = socket.gethostname()
ip_list = []
# 獲取IP地址信息
addr_infos = socket.getaddrinfo(hostname, None)
for addr in addr_infos:
ip_list.append(addr[4][0])
# print(ip_list)
return ip_list運行結(jié)果:
D:\Python3.8.6\python.exe D:/PythonWorkSpace/someip/Common/get_IP_adress.py
fe80::f439:ac0:9050:c9f
fe80::1d73:c1cf:c1ca:6d0d
fe80::9d23:6620:a01:aa33
fe80::856d:dbe3:ada3:a32a
192.168.42.44
172.29.11.5
192.168.114.1
192.168.64.1Process finished with exit code 0
附:本機IP與127.0.0.1及l(fā)ocalhost的區(qū)別
127.0.0.1
環(huán)回地址是主機用于向自身發(fā)送通信的一個特殊地址。同一臺主機上的兩項服務(wù)若使用環(huán)回地址而非分配的主機地址,就可以繞開TCP/IP協(xié)議棧的下層。
IPv4的環(huán)回地址為:127.0.0.0到127.255.255.255都是環(huán)回地址
當(dāng)操作系統(tǒng)初始化本機的TCP/IP協(xié)議棧時,設(shè)置協(xié)議棧本身的IP地址為127.0.0.1(保留地址),并注入路由表
127.0.0.1是保留地址之一,來檢驗本機TCP/IP協(xié)議棧,ping 127.0.0.1一般作為測試本機TCP/IP協(xié)議棧正常與否的判斷之一。
localhost
localhost首先是一個域名,也是本機地址,它可以被配置為任意的IP地址。不過通常情況下都指向:(如下)
IPv4:表示
127.0.0.1IPv6:表示 [::1]
本機IP
本機IP,可以理解為本機有三塊網(wǎng)卡:
- 一塊網(wǎng)卡叫做loopback(虛擬網(wǎng)卡)
- 一塊叫做ethernet(有線網(wǎng)卡)
- 一塊叫做wlan(你的無線網(wǎng)卡)
聯(lián)網(wǎng),網(wǎng)卡傳輸,受防火墻和網(wǎng)卡限制
解決方法
獲取本機IP有其它的方法:
import os
import socket
gw = os.popen("ip -4 route show default").read().split()
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect((gw[2], 0))
ipaddr = s.getsockname()[0]
gateway = gw[2]
host = socket.gethostname()
print("IP:", ipaddr, " GW:", gateway, " Host:", host)
或者
import os
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
ip = s.getsockname()[0]
print("IP:", ip) 總結(jié)
到此這篇關(guān)于Python獲取ip地址的3種方法的文章就介紹到這了,更多相關(guān)Python獲取ip地址內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python tkinter實現(xiàn)春節(jié)煙花效果demo
這篇文章主要為大家介紹了Python實現(xiàn)春節(jié)煙花效果demo,本文為大家提供了兩種實現(xiàn)方式代碼,詳細(xì)的實現(xiàn)一場浪漫的煙花秀,有需要的朋友可以借鑒參考下2024-01-01
使用python處理題庫表格并轉(zhuǎn)化為word形式的實現(xiàn)
這篇文章主要介紹了使用python處理題庫表格并轉(zhuǎn)化為word形式的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
Python面向?qū)ο蟪绦蛟O(shè)計類的多態(tài)用法詳解
這篇文章主要介紹了Python面向?qū)ο蟪绦蛟O(shè)計類的多態(tài)用法,結(jié)合實例形式詳細(xì)分析了Python面向?qū)ο蟪绦蛟O(shè)計中類的多態(tài)概念、原理、用法及相關(guān)操作注意事項,需要的朋友可以參考下2019-04-04
python?memory_profiler庫生成器和迭代器內(nèi)存占用的時間分析
這篇文章主要介紹了python?memory_profiler庫生成器和迭代器內(nèi)存占用的時間分析,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,感興趣的小伙伴可以參考一下2022-06-06
Python內(nèi)置庫之webbrowser模塊用法詳解
webbrowser模塊是Python自帶的標(biāo)準(zhǔn)庫,無需安裝,可以直接在Python中使用該模塊來打開網(wǎng)頁、PDF文件等,本文給大家詳細(xì)介紹了Python webbrowser模塊用法,需要的朋友可以參考下2023-08-08
注意import和from import 的區(qū)別及說明
這篇文章主要介紹了注意import和from import 的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09

