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
運行結果:
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
運行結果:
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
運行結果:
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ā)送通信的一個特殊地址。同一臺主機上的兩項服務若使用環(huán)回地址而非分配的主機地址,就可以繞開TCP/IP協(xié)議棧的下層。
IPv4的環(huán)回地址為:127.0.0.0到127.255.255.255都是環(huán)回地址
當操作系統(tǒng)初始化本機的TCP/IP協(xié)議棧時,設置協(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.1
IPv6:表示 [::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)
總結
到此這篇關于Python獲取ip地址的3種方法的文章就介紹到這了,更多相關Python獲取ip地址內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
淺談pandas篩選出表中滿足另一個表所有條件的數(shù)據(jù)方法
今天小編就為大家分享一篇淺談pandas篩選出表中滿足另一個表所有條件的數(shù)據(jù)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02詳解Python+Pyecharts實現(xiàn)漏斗圖的繪制
漏斗圖是一個簡單的散點圖,反映研究在一定樣本量或精確性下單個研究的干預效應估計值。本文將用Python Pyecharts實現(xiàn)漏斗圖的繪制,需要的可以參考一下2022-06-06Python BeautifulSoup基本用法詳解(通過標簽及class定位元素)
這篇文章主要介紹了Python BeautifulSoup基本用法(通過標簽及class定位元素),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08