gethostbyname
和gethostbyname_ex
均是socket模块
中的一个函数,都可用于来获取本地ip地址。
PS:Linux(云服务器)服务器使用下面的函数来获取到的是公网IP地址,在本地的Windows机器上面获取到的是内网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'
>>> 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并以元组的方式返回。