Python获取ip地址的3种方法代码
作者:Demons_皮
方法一
#获取本机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
方法二
#获取公网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及localhost的区别
127.0.0.1
环回地址是主机用于向自身发送通信的一个特殊地址。同一台主机上的两项服务若使用环回地址而非分配的主机地址,就可以绕开TCP/IP协议栈的下层。
IPv4的环回地址为:127.0.0.0到127.255.255.255都是环回地址
当操作系统初始化本机的TCP/IP协议栈时,设置协议栈本身的IP地址为127.0.0.1(保留地址),并注入路由表
127.0.0.1是保留地址之一,来检验本机TCP/IP协议栈,ping 127.0.0.1
一般作为测试本机TCP/IP协议栈正常与否的判断之一。
localhost
localhost首先是一个域名,也是本机地址,它可以被配置为任意的IP地址。不过通常情况下都指向:(如下)
IPv4:表示
127.0.0.1
IPv6:表示 [::1]
本机IP
本机IP,可以理解为本机有三块网卡:
- 一块网卡叫做loopback(虚拟网卡)
- 一块叫做ethernet(有线网卡)
- 一块叫做wlan(你的无线网卡)
联网,网卡传输,受防火墙和网卡限制
解决方法
获取本机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地址内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!