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
方法二
#获取公网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地址内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
TensorFlow tf.nn.conv2d实现卷积的方式
今天小编就为大家分享一篇TensorFlow tf.nn.conv2d实现卷积的方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-01-01django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例
这篇文章主要介绍了django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-05-05Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
pipenv 是 Pipfile 主要倡导者、requests 作者 Kenneth Reitz 写的一个命令行工具,主要包含了Pipfile、pip、click、requests和virtualenv。这篇文章主要介绍了Pycharm 使用 Pipenv 新建的虚拟环境的问题,需要的朋友可以参考下2020-04-04
最新评论