当前位置:   article > 正文

Python 代码 获取本机IP地址的几种方式_python3获取本机ip

python3获取本机ip

1.使用自带socket库

  • 获取局域网IP
  1. import socket
  2. # 函数 gethostname() 返回当前正在执行 Python 的系统主机名
  3. res = socket.gethostbyname(socket.gethostname())
  4. print(res)
  • 1
  • 2
  • 3
  • 4
  • 但是上面这个获取的不是公网IP,结果也不稳定,不建议使用。
    如果计算机设备有连接到 Internet 的路由,可以使用获得局域网IP:
  1. import socket
  2. s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  3. s.connect(("8.8.8.8", 80))
  4. print(s.getsockname()[0])
  • 1
  • 2
  • 3
  • 4
  • 另一个适用于所有接口。它还适用于所有公共、私有、外部 IP。这种方法在 Linux、Windows 和 OSX 上很有效。

注意:如果本身局域网IP就是公网IP的话,那这个获得的,可以认为是公网IP了。

  1. import socket
  2. def extract_ip():
  3. st = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  4. try:
  5. st.connect(('10.255.255.255', 1))
  6. IP = st.getsockname()[0]
  7. except Exception:
  8. IP = '127.0.0.1'
  9. finally:
  10. st.close()
  11. return IP
  12. print(extract_ip())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

3、使用第三方库(netifaces)

netifaces 模块用于提供有关网络接口及其状态的信息。

没有使用过的先装一下库

pip3 install netifaces
  • 1

然后使用

  1. from netifaces import interfaces, ifaddresses, AF_INET
  2. for ifaceName in interfaces():
  3. addresses = [i['addr'] for i in ifaddresses(ifaceName).setdefault(AF_INET, [{'addr':'No IP addr'}] )]
  4. print(' '.join(addresses))
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/628394
推荐阅读
相关标签
  

闽ICP备14008679号