且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Python获取本机IP(多网卡)

更新时间:2022-09-18 13:43:27

 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