gethostbynamegethostbyname_ex均是socket模块中的一个函数,都可用于来获取本地ip地址。
PS:Linux(阿里云服务器)服务器使用下面的函数来获取到的是公网IP地址,在本地的Windows机器上面获取到的是内网IP地址。

gethostbyname函数获取本地ip地址

>>>impoert socket
>>> socket.gethostbyname(socket.gethostname())
'116.196.107.126' 
>>> hostname = socket.gethostname()
>>> print hostname
jd.svr.lianst.com
>>> socket.gethostbyname(hostname)
'116.196.107.126'

gethostbyname_ex函数获取本地ip地址

>>> socket.gethostbyname_ex(socket.gethostname())
('jd.svr.lianst.com', [], ['116.196.107.126'])
>>> socket.gethostbyname_ex(socket.gethostname())[2]
['116.196.107.126']

从上面两个例子里面可以看出来,gethostbyname仅仅获取到ip地址,并以字符串的形式返回;而gethostname_ex则可以获取到更多的信息,包括hostname并以元组的方式返回。

文章目录