Python获取ip地址的3种方法代码

 更新时间:2023年10月28日 09:32:40   作者:Demons_皮  
在Python中获取IP地址的方法有很多种,这篇文章主要给大家介绍了关于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.44

Process 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.244

Process 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.1

Process 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地址内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PyQt5的相对布局管理的实现

    PyQt5的相对布局管理的实现

    这篇文章主要介绍了PyQt5的相对布局管理的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Python tkinter实现春节烟花效果demo

    Python tkinter实现春节烟花效果demo

    这篇文章主要为大家介绍了Python实现春节烟花效果demo,本文为大家提供了两种实现方式代码,详细的实现一场浪漫的烟花秀,有需要的朋友可以借鉴参考下
    2024-01-01
  • 使用python处理题库表格并转化为word形式的实现

    使用python处理题库表格并转化为word形式的实现

    这篇文章主要介绍了使用python处理题库表格并转化为word形式的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Python面向对象程序设计类的多态用法详解

    Python面向对象程序设计类的多态用法详解

    这篇文章主要介绍了Python面向对象程序设计类的多态用法,结合实例形式详细分析了Python面向对象程序设计中类的多态概念、原理、用法及相关操作注意事项,需要的朋友可以参考下
    2019-04-04
  • python memory_profiler库生成器和迭代器内存占用的时间分析

    python memory_profiler库生成器和迭代器内存占用的时间分析

    这篇文章主要介绍了python memory_profiler库生成器和迭代器内存占用的时间分析,文章围绕主题展开详细的内容介绍,感兴趣的小伙伴可以参考一下
    2022-06-06
  • Python如何实现小程序 无限求和平均

    Python如何实现小程序 无限求和平均

    这篇文章主要介绍了python如何实现小程序 无限求和平均,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Python中input与raw_input 之间的比较

    Python中input与raw_input 之间的比较

    这篇文章主要介绍了Python中input与raw_input 之间的比较的相关资料,通过本文希望能帮助到大家,对于他们之间的使用方法和区别,需要的朋友可以参考下
    2017-08-08
  • 基于wxpython开发的简单gui计算器实例

    基于wxpython开发的简单gui计算器实例

    这篇文章主要介绍了基于wxpython开发的简单gui计算器,实例分析了基于wxpython实现简单桌面应用程序的相关技巧,需要的朋友可以参考下
    2015-05-05
  • Python内置库之webbrowser模块用法详解

    Python内置库之webbrowser模块用法详解

    webbrowser模块是Python自带的标准库,无需安装,可以直接在Python中使用该模块来打开网页、PDF文件等,本文给大家详细介绍了Python webbrowser模块用法,需要的朋友可以参考下
    2023-08-08
  • 注意import和from import 的区别及说明

    注意import和from import 的区别及说明

    这篇文章主要介绍了注意import和from import 的区别及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09

最新评论