更新时间: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
*** walker ***
本文转自walker snapshot博客51CTO博客,原文链接http://blog.51cto.com/walkerqt/1686735如需转载请自行联系原作者
RQSLT