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