Python获取本机IP(多网卡)

 Python获取本机IP地址的一般方法为

1
2
3
import  socket
 
IP  =  socket.gethostbyname(socket.gethostname())

  通过gethostname获取主机名,再用gethostbyname将主机名转换为IP地址。

  那么,问题来了。如果主机有多个网卡/IP,怎样获取某个指定的IP地址呢?

  一个方法是通过socket.gethostbyname_ex获取主机IP地址列表,然后遍历列表取得自己需要的IP。

1
2
3
4
5
6
7
8
9
10
11
12
13
import  socket
 
#多网卡情况下,根据前缀获取IP
def  GetLocalIPByPrefix(prefix):
     localIP  =  ''
     for  ip  in  socket.gethostbyname_ex(socket.gethostname())[ 2 ]:
         if  ip.startswith(prefix):
             localIP  =  ip
     
     return  localIP
     
     
print (GetLocalIPByPrefix( '192.168' ))

  更简单的方法(不用修改代码,还是用socket.gethostname函数),是通过配置hosts文件改变IP优先级。

  上面的方法只支持IPv4,如果要获取IPv6信息,参考socket.getaddrinfo


相关阅读:

1、socket — Low-level networking interface

2、用Python获取自己的外网IP


*** walker ***

本文转自walker snapshot博客51CTO博客,原文链接http://blog.51cto.com/walkerqt/1686735如需转载请自行联系原作者


RQSLT

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值