Python获取本机所有IP地址
众所周知,Python标准库socket中有可以获取本机IPV4地址的方法,下面是网上非常常见的一种用法:
>>> import socket
>>> hostname = socket.gethostname()
>>> hostname
'DESKTOP-I734J3O'
>>> socket.gethostbyname(hostname)
'192.168.0.103'
上面的代码在Windows下运行良好,但是无意中发现在Mac系统下运行不正常,返回的是本机回环地址127.0.0.1,而不是真正的IP地址。经过查阅大量资料,终于发现socket模块中另一个函数的妙用,那就是getaddrinfo()函数,该函数用法为getaddrinfo(host, port, family=0, type=0, proto=0, flags=0),返回值是一个五元组的列表,该五元组形式为(family, type, proto, canonname, sockaddr),其中最后一个元素sockaddr对于IPV4协议是(IP address, port)形式的元组,而对于IPV6协议是(address, port, flow info, scope id)形式的元组,也就是说,不管是IPV4还是IPV6,上面的函数都可以正确地获取IP地址。
于是,继续上面的代码:
>>> addrs = socket.getaddrinfo(hostname,None)
>>> for item in addrs:
print(item)
(<AddressFamily.AF_INET6: 23>, 0, 0, '', ('fe80::b976:b065:27d:3747%10', 0, 0, 10))
(<AddressFamily.AF_INET6: 23>, 0, 0, '', ('fe80::1456:951:2418:27cf%7', 0, 0, 7))
(<AddressFamily.AF_INET: 2>, 0, 0, '', ('192.168.0.103', 0))
(<AddressFamily.AF_INET6: 23>, 0, 0, '', ('2001:0:9d38:6ab8:1456:951:2418:27cf', 0, 0, 0))
如此便可以获取本机所有IPV4和IPV6地址,如果只想获取IPV4地址,再继续执行下面的代码:
>>> [item[4][0] for item in addrs if ':' not in item[4][0]][0]
'192.168.0.103'
有关文章阅读:
Python获取局域网内所有机器IP地址与网卡MAC地址
Python批量判断IP地址所属地区
Python监视域名对应IP地址变化情况
Python获取本机所有网卡的MAC地址
--------------我是分割线-------------
“Python小屋”公众号近期主要活动:
1、赠书活动:详情请进入公众号以后通过菜单“最新资源”===>“历史文章分类表”进行查看
2、Python师资培训班:8月6日-12日,济南,面向全国高校老师和企业朋友,通知详见关于举办2017年暑期全国高校教师 “Python编程及应用”培训班通知,赠送Python教材2本、Python教学PPT超过1600页,Python教学视频140集,Python教学案例300个。补充说明:如果不需要安排住宿的话,5天学费2100元(含午餐)。
Python获取本机所有IP地址相关推荐
- python获取小王的ip地址_用Python获取本机的IP地址
Linux import socket import fcntl import struct def get_ip_address(ifname): s = socket.socket(socket. ...
- python 获取本机wifi IP地址
import os,re import webbrowserclass WeNetWork_open_browser():def execCmd(self, cmd): # 返回CMD命令输出的内容r ...
- python项目实战:获取本机所有IP地址的方法
2019独角兽企业重金招聘Python工程师标准>>> 前言 今天为大家介绍一个利用python获取本机所有IP地址的具体代码,具有一定的参考价值,希望能够帮助到大家,代码如下: 导 ...
- 【Win 10 应用开发】获取本机的IP地址
按照老规矩,也是朋友的建议,老周今天在吹牛之前,先讲一个小故事. 有朋友问我,老周,你现在还发短信吗,你每个月用多少电话费?唉,实话说,现在真的发短信不多了,套餐送的130条短信,每月都发不了一条.至 ...
- C++获取本机的ip地址程序
C++获取本机的ip地址程序 #include <WinSock2.h> #pragma comment(lib,"ws2_32") //链接到ws2_32动态链接库c ...
- 使用Linux curl命令获取本机公网IP地址
使用Linux curl命令获取本机公共IP地址 在本教程中,我们将学习如何使用Linux curl命令查找计算机的公共IP地址. 通常,如果我们想要找到我们使用的公共IP地址,我们会去谷歌并搜索&q ...
- VB6获取本机所有IP地址公用函数
因为正好有用到,整了个公用函数,一次获取本机全部IP地址: Option ExplicitPrivate Declare Function WSAstartup Lib "WSOCK32.D ...
- Spring boot 获取本机的IP地址mac地址以及电脑名称!
Spring boot 获取本机的IP地址mac地址以及电脑名称! package com.example.demo;import java.net.InetAddress;import java.n ...
- 如何在Node.js中获取本机本地IP地址
最近在做Cloud related的项目时,遇到一个问题,就是如何在Node.js中获取本机的IP地址.Node.js提供的API中,只能获取本机的hostname. os = require('os ...
最新文章
- Python破解验证码技术,识别率高达百分之八十
- 2.3.1 进程同步 进程互斥
- 查询当前oracle字符集,查询修改oracle当前字符集-转
- 使用Synergy多台电脑共享键盘鼠标和剪贴板
- oracle仲裁磁盘是一块磁盘吗,基于ASM冗余设计的架构,仲裁磁盘组应该如何去规划?...
- mysql innodb索引原理
- python-带返回值的装饰器
- lsm mysql_LSM设计一个数据库引擎
- c语言学习笔记【结构体02】结构体指针变量与结构体变量的函数参数,C语言学习笔记结构体02结构体指针变量与结构体变量的函数参数.docx...
- php 输出可以设置格式文件,PHP实现的文件直接输出下载
- Math.random()取随机数一直为0
- 进程退出:SIGINT、SIGTERM和SIGKILL区别
- KVM 介绍(7):使用 libvirt 做 QEMU/KVM 快照和 Nova 实例的快照 (Nova Instances Snapshot Libvirt)
- oracle如何查看剩余表空间,oracle 查看各表空间剩余量
- mac OSX安装VTK
- java nginx 502_Nginx 中 502 和 504 错误详解
- Dao接口返回数组_在内存只有10M的空间中申请一块5M的数组空间,会导致OOM吗?...
- 刚装好的mysql设置密码_第一次装好mysql后要设置密码
- 智慧创造财富,第十五期【新营销·创富大会】圆满落幕!
- 在数据库应用系统中数据库的开发
热门文章
- 插入公式_word2016编写文档 插入公式选项为暗,不能操作
- java设计模式观察者模式_java设计模式--观察者模式
- 最难忘的一节计算机课,最难忘的一节课作文五篇
- lcl手术和飞秒区别_想知道自己适合哪种近视手术?Mark!
- x射线直接投影成像的条件_告诉你如何区分X射线DR、CR和胶片成像?
- 史上最详 Thymeleaf 使用教程
- Struts2和Spring3 MVC的区别说明
- Jsp+Servlet+Mysql实现的在线图书商城源码
- 基于JAVA+SpringMVC+MYSQL的求职招聘管理系统
- 基于JAVA+SpringMVC+Mybatis+MYSQL的在线学习管理系统源码